mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge mozilla-central to mozilla-inbound
This commit is contained in:
commit
be847bb9bd
@ -195,7 +195,7 @@
|
||||
oncommand="gSyncSetup.onServerCommand()"
|
||||
oninput="gSyncSetup.onServerInput()">
|
||||
<menupopup>
|
||||
<menuitem label="&serverType.main.label;"
|
||||
<menuitem label="&serverType.default.label;"
|
||||
value="main"/>
|
||||
<menuitem label="&serverType.custom2.label;"
|
||||
value="custom"/>
|
||||
@ -335,7 +335,7 @@
|
||||
oncommand="gSyncSetup.onExistingServerCommand()"
|
||||
oninput="gSyncSetup.onExistingServerInput()">
|
||||
<menupopup>
|
||||
<menuitem label="&serverType.main.label;"
|
||||
<menuitem label="&serverType.default.label;"
|
||||
value="main"/>
|
||||
<menuitem label="&serverType.custom2.label;"
|
||||
value="custom"/>
|
||||
|
@ -64,7 +64,7 @@ function test() {
|
||||
let testState = {
|
||||
windows: [
|
||||
{ tabs: [{ entries: [{ url: "http://example.com/" }] }], selected: 1 },
|
||||
{ tabs: [{ entries: [{ url: "about:robots" }] }], selected: 1 },
|
||||
{ tabs: [{ entries: [{ url: "about:mozilla" }] }], selected: 1 },
|
||||
],
|
||||
// make sure the first window is focused, otherwise when restoring the
|
||||
// old state, the first window is closed and the test harness gets unloaded
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
<!-- New Account AND Existing Account -->
|
||||
<!ENTITY server.label "Server">
|
||||
<!ENTITY serverType.main.label "&syncBrand.fullName.label; Server">
|
||||
<!ENTITY serverType.default.label "Default: Mozilla &syncBrand.fullName.label; server">
|
||||
<!ENTITY serverType.custom2.label "Use a custom server…">
|
||||
<!ENTITY signIn.account2.label "Account">
|
||||
<!ENTITY signIn.account2.accesskey "A">
|
||||
|
@ -1760,6 +1760,10 @@ main(int argc, char **argv, char **envp)
|
||||
setbuf(stdout, 0);
|
||||
#endif
|
||||
|
||||
#ifdef XRE_HAS_DLL_BLOCKLIST
|
||||
XRE_SetupDllBlocklist();
|
||||
#endif
|
||||
|
||||
gErrFile = stderr;
|
||||
gOutFile = stdout;
|
||||
gInFile = stdin;
|
||||
|
@ -47,6 +47,7 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Build;
|
||||
import android.os.SystemClock;
|
||||
|
||||
public class GeckoBatteryManager
|
||||
@ -77,7 +78,14 @@ public class GeckoBatteryManager
|
||||
boolean previousCharging = isCharging();
|
||||
double previousLevel = getLevel();
|
||||
|
||||
if (intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false)) {
|
||||
// NOTE: it might not be common (in 2012) but technically, Android can run
|
||||
// on a device that has no battery so we want to make sure it's not the case
|
||||
// before bothering checking for battery state.
|
||||
// However, the Galaxy Nexus phone advertizes itself as battery-less which
|
||||
// force us to special-case the logic.
|
||||
// See the Google bug: https://code.google.com/p/android/issues/detail?id=22035
|
||||
if (intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false) ||
|
||||
Build.MODEL.equals("Galaxy Nexus")) {
|
||||
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
|
||||
if (plugged == -1) {
|
||||
sCharging = kDefaultCharging;
|
||||
@ -140,7 +148,7 @@ public class GeckoBatteryManager
|
||||
} else {
|
||||
sLevel = kDefaultLevel;
|
||||
sCharging = kDefaultCharging;
|
||||
sRemainingTime = kDefaultRemainingTime;
|
||||
sRemainingTime = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -45,7 +45,7 @@ Phase("phase04", [
|
||||
|
||||
// Now we disable the add-on
|
||||
Phase("phase05", [
|
||||
[Sync],
|
||||
[EnsureTracking],
|
||||
[Addons.setEnabled, [id], STATE_DISABLED],
|
||||
[Sync]
|
||||
]);
|
||||
@ -62,6 +62,7 @@ Phase("phase08", [
|
||||
|
||||
// Now we re-enable it again.
|
||||
Phase("phase09", [
|
||||
[EnsureTracking],
|
||||
[Addons.setEnabled, [id], STATE_ENABLED],
|
||||
[Sync]
|
||||
]);
|
||||
@ -77,7 +78,9 @@ Phase("phase12", [
|
||||
]);
|
||||
|
||||
// And we uninstall it
|
||||
|
||||
Phase("phase13", [
|
||||
[EnsureTracking],
|
||||
[Addons.verify, [id], STATE_ENABLED],
|
||||
[Addons.uninstall, [id]],
|
||||
[Sync]
|
||||
|
@ -33,6 +33,7 @@ Phase("phase02", [
|
||||
|
||||
// Now disable and see that is is synced.
|
||||
Phase("phase03", [
|
||||
[EnsureTracking],
|
||||
[Addons.setEnabled, [id], STATE_DISABLED],
|
||||
[Addons.verify, [id], STATE_DISABLED],
|
||||
[Sync]
|
||||
@ -44,6 +45,7 @@ Phase("phase04", [
|
||||
|
||||
// Enable and see it is synced.
|
||||
Phase("phase05", [
|
||||
[EnsureTracking],
|
||||
[Addons.setEnabled, [id], STATE_ENABLED],
|
||||
[Addons.verify, [id], STATE_ENABLED],
|
||||
[Sync]
|
||||
@ -55,6 +57,7 @@ Phase("phase06", [
|
||||
|
||||
// Uninstall and see it is synced.
|
||||
Phase("phase07", [
|
||||
[EnsureTracking],
|
||||
[Addons.verify, [id], STATE_ENABLED],
|
||||
[Addons.uninstall, [id]],
|
||||
[Addons.verifyNot, [id]],
|
||||
|
@ -93,7 +93,8 @@ function serverForFoo(engine) {
|
||||
add_test(function test_processIncoming_error_orderChildren() {
|
||||
_("Ensure that _orderChildren() is called even when _processIncoming() throws an error.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
let engine = new BookmarksEngine();
|
||||
@ -166,8 +167,8 @@ add_test(function test_restorePromptsReupload() {
|
||||
_("Ensure that restoring from a backup will reupload all records.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
let engine = new BookmarksEngine();
|
||||
let store = engine._store;
|
||||
@ -334,8 +335,8 @@ add_test(function test_mismatched_types() {
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
let engine = new BookmarksEngine();
|
||||
let store = engine._store;
|
||||
@ -377,7 +378,8 @@ add_test(function test_bookmark_guidMap_fail() {
|
||||
_("Ensure that failures building the GUID map cause early death.");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let engine = new BookmarksEngine();
|
||||
let store = engine._store;
|
||||
|
@ -107,8 +107,8 @@ add_test(function test_annotation_uploaded() {
|
||||
|
||||
_("Sync record to the server.");
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
let server = serverForFoo(engine);
|
||||
let collection = server.user("foo").collection("bookmarks");
|
||||
@ -193,8 +193,8 @@ add_test(function test_smart_bookmarks_duped() {
|
||||
|
||||
_("Prepare sync.");
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
let server = serverForFoo(engine);
|
||||
let collection = server.user("foo").collection("bookmarks");
|
||||
|
@ -54,8 +54,8 @@ add_test(function test_bad_hmac() {
|
||||
|
||||
try {
|
||||
let passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Service.login("foo", "ilovejane", passphrase);
|
||||
|
||||
generateNewKeys();
|
||||
@ -164,7 +164,9 @@ add_test(function test_properties() {
|
||||
|
||||
add_test(function test_sync() {
|
||||
_("Ensure that Clients engine uploads a new client record once a week.");
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
generateNewKeys();
|
||||
|
||||
@ -402,7 +404,9 @@ add_test(function test_process_incoming_commands() {
|
||||
|
||||
add_test(function test_command_sync() {
|
||||
_("Ensure that commands are synced across clients.");
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
Clients._store.wipe();
|
||||
|
@ -19,8 +19,8 @@ add_test(function test_missing_crypto_collection() {
|
||||
};
|
||||
}
|
||||
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa";
|
||||
|
@ -55,8 +55,8 @@ add_test(function test_locally_changed_keys() {
|
||||
Weave.Service.password = "ilovejane";
|
||||
Weave.Service.passphrase = passphrase;
|
||||
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
Engines.register(HistoryEngine);
|
||||
Weave.Service._registerEngines();
|
||||
|
@ -4,7 +4,8 @@ Cu.import("resource://services-sync/util.js");
|
||||
add_test(function test_processIncoming_abort() {
|
||||
_("An abort exception, raised in applyIncoming, will abort _processIncoming.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
generateNewKeys();
|
||||
|
||||
|
@ -9,6 +9,7 @@ Cu.import("resource://services-sync/status.js");
|
||||
Svc.DefaultPrefs.set("registerEngines", "");
|
||||
Cu.import("resource://services-sync/service.js");
|
||||
|
||||
const TEST_MAINTENANCE_URL = "http://localhost:8080/maintenance/";
|
||||
const logsdir = FileUtils.getDir("ProfD", ["weave", "logs"], true);
|
||||
const LOG_PREFIX_SUCCESS = "success-";
|
||||
const LOG_PREFIX_ERROR = "error-";
|
||||
@ -120,8 +121,10 @@ function setUp() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
|
||||
return generateAndUploadKeys();
|
||||
}
|
||||
|
||||
@ -219,7 +222,8 @@ add_test(function test_shouldReportError() {
|
||||
|
||||
// Give ourselves a clusterURL so that the temporary 401 no-error situation
|
||||
// doesn't come into play.
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
// Test dontIgnoreErrors, non-network, non-prolonged, login error reported
|
||||
Status.resetSync();
|
||||
@ -510,7 +514,8 @@ add_test(function test_login_syncAndReportErrors_network_error() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
|
||||
Svc.Obs.remove("weave:ui:login:error", onSyncError);
|
||||
@ -548,7 +553,8 @@ add_test(function test_login_syncAndReportErrors_prolonged_network_error() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
|
||||
Svc.Obs.remove("weave:ui:login:error", onSyncError);
|
||||
@ -627,7 +633,8 @@ add_test(function test_login_prolonged_network_error() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
|
||||
Svc.Obs.remove("weave:ui:login:error", onSyncError);
|
||||
@ -704,7 +711,8 @@ add_test(function test_login_network_error() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
// Test network errors are not reported.
|
||||
Svc.Obs.add("weave:ui:clear-error", function onClearError() {
|
||||
@ -777,7 +785,8 @@ add_test(function test_info_collections_login_server_maintenance_error() {
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.info";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -816,7 +825,8 @@ add_test(function test_meta_global_login_server_maintenance_error() {
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.meta";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -855,7 +865,8 @@ add_test(function test_crypto_keys_login_server_maintenance_error() {
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.keys";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
// Force re-download of keys
|
||||
CollectionKeys.clear();
|
||||
|
||||
@ -922,7 +933,8 @@ add_test(function test_info_collections_login_prolonged_server_maintenance_error
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.info";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -954,7 +966,8 @@ add_test(function test_meta_global_login_prolonged_server_maintenance_error(){
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.meta";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -986,7 +999,8 @@ add_test(function test_download_crypto_keys_login_prolonged_server_maintenance_e
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.keys";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
// Force re-download of keys
|
||||
CollectionKeys.clear();
|
||||
|
||||
@ -1022,7 +1036,8 @@ add_test(function test_upload_crypto_keys_login_prolonged_server_maintenance_err
|
||||
Service.username = "broken.keys";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1057,7 +1072,8 @@ add_test(function test_wipeServer_login_prolonged_server_maintenance_error(){
|
||||
Service.username = "broken.wipe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1091,7 +1107,8 @@ add_test(function test_wipeRemote_prolonged_server_maintenance_error(){
|
||||
Service.username = "broken.wipe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
generateAndUploadKeys();
|
||||
|
||||
let engine = Engines.get("catapult");
|
||||
@ -1158,7 +1175,8 @@ add_test(function test_info_collections_login_syncAndReportErrors_server_mainten
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.info";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1191,7 +1209,8 @@ add_test(function test_meta_global_login_syncAndReportErrors_server_maintenance_
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.meta";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1224,7 +1243,8 @@ add_test(function test_download_crypto_keys_login_syncAndReportErrors_server_mai
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.keys";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
// Force re-download of keys
|
||||
CollectionKeys.clear();
|
||||
|
||||
@ -1261,7 +1281,8 @@ add_test(function test_upload_crypto_keys_login_syncAndReportErrors_server_maint
|
||||
Service.username = "broken.keys";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1296,7 +1317,8 @@ add_test(function test_wipeServer_login_syncAndReportErrors_server_maintenance_e
|
||||
Service.username = "broken.wipe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1330,7 +1352,8 @@ add_test(function test_wipeRemote_syncAndReportErrors_server_maintenance_error()
|
||||
Service.username = "broken.wipe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
generateAndUploadKeys();
|
||||
|
||||
let engine = Engines.get("catapult");
|
||||
@ -1397,7 +1420,8 @@ add_test(function test_info_collections_login_syncAndReportErrors_prolonged_serv
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.info";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1430,7 +1454,8 @@ add_test(function test_meta_global_login_syncAndReportErrors_prolonged_server_ma
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.meta";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1463,7 +1488,8 @@ add_test(function test_download_crypto_keys_login_syncAndReportErrors_prolonged_
|
||||
setUp();
|
||||
|
||||
Service.username = "broken.keys";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
// Force re-download of keys
|
||||
CollectionKeys.clear();
|
||||
|
||||
@ -1500,7 +1526,8 @@ add_test(function test_upload_crypto_keys_login_syncAndReportErrors_prolonged_se
|
||||
Service.username = "broken.keys";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
@ -1535,7 +1562,8 @@ add_test(function test_wipeServer_login_syncAndReportErrors_prolonged_server_mai
|
||||
Service.username = "broken.wipe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/maintenance/";
|
||||
Service.serverURL = TEST_MAINTENANCE_URL;
|
||||
Service.clusterURL = TEST_MAINTENANCE_URL;
|
||||
|
||||
let backoffInterval;
|
||||
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
|
||||
|
@ -51,7 +51,8 @@ function setUp() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "aabcdeabcdeabcdeabcdeabcde";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
new FakeCryptoService();
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,8 @@ add_test(function test_processIncoming_mobile_history_batched() {
|
||||
|
||||
let FAKE_DOWNLOAD_LIMIT = 100;
|
||||
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Svc.Prefs.set("client.type", "mobile");
|
||||
PlacesUtils.history.removeAllPages();
|
||||
|
@ -18,8 +18,8 @@ function shared_setup() {
|
||||
hmacErrorCount = 0;
|
||||
|
||||
// Do not instantiate SyncTestingInfrastructure; we need real crypto.
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Service.username = "foo";
|
||||
Service.password = "foo";
|
||||
Service.passphrase = "aabcdeabcdeabcdeabcdeabcde";
|
||||
|
@ -35,7 +35,8 @@ function setUp() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
generateNewKeys();
|
||||
let serverKeys = CollectionKeys.asWBO("crypto", "keys");
|
||||
|
@ -166,7 +166,7 @@ const DATA = {"msg": "eggstreamly sekrit"};
|
||||
const POLLINTERVAL = 50;
|
||||
|
||||
function run_test() {
|
||||
Svc.Prefs.set("jpake.serverURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("jpake.serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("jpake.pollInterval", POLLINTERVAL);
|
||||
Svc.Prefs.set("jpake.maxTries", 2);
|
||||
Svc.Prefs.set("jpake.firstMsgMaxTries", 5);
|
||||
|
@ -76,8 +76,8 @@ function prepareServer() {
|
||||
Service.username = "johndoe";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.password = "ilovejane";
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
do_check_eq(Service.userAPI, "http://localhost:8080/user/1.0/");
|
||||
let server = new SyncServer();
|
||||
|
@ -4,6 +4,9 @@ Cu.import("resource://services-sync/log4moz.js");
|
||||
Cu.import("resource://services-sync/resource.js");
|
||||
Cu.import("resource://services-sync/util.js");
|
||||
|
||||
const RES_UPLOAD_URL = "http://localhost:8080/upload";
|
||||
const RES_HEADERS_URL = "http://localhost:8080/headers";
|
||||
|
||||
let logger;
|
||||
|
||||
let fetched = false;
|
||||
@ -322,7 +325,7 @@ add_test(function test_get_404() {
|
||||
|
||||
add_test(function test_put_string() {
|
||||
_("PUT to a resource (string)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.put(JSON.stringify(sample_data), function(error, content) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(content, "Valid data upload via PUT");
|
||||
@ -334,7 +337,7 @@ add_test(function test_put_string() {
|
||||
|
||||
add_test(function test_put_object() {
|
||||
_("PUT to a resource (object)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.put(sample_data, function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(content, "Valid data upload via PUT");
|
||||
@ -346,7 +349,7 @@ add_test(function test_put_object() {
|
||||
|
||||
add_test(function test_put_data_string() {
|
||||
_("PUT without data arg (uses resource.data) (string)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.data = JSON.stringify(sample_data);
|
||||
res_upload.put(function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
@ -359,7 +362,7 @@ add_test(function test_put_data_string() {
|
||||
|
||||
add_test(function test_put_data_object() {
|
||||
_("PUT without data arg (uses resource.data) (object)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.data = sample_data;
|
||||
res_upload.put(function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
@ -372,7 +375,7 @@ add_test(function test_put_data_object() {
|
||||
|
||||
add_test(function test_post_string() {
|
||||
_("POST to a resource (string)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.post(JSON.stringify(sample_data), function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(content, "Valid data upload via POST");
|
||||
@ -384,7 +387,7 @@ add_test(function test_post_string() {
|
||||
|
||||
add_test(function test_post_object() {
|
||||
_("POST to a resource (object)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.post(sample_data, function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(content, "Valid data upload via POST");
|
||||
@ -396,7 +399,7 @@ add_test(function test_post_object() {
|
||||
|
||||
add_test(function test_post_data_string() {
|
||||
_("POST without data arg (uses resource.data) (string)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.data = JSON.stringify(sample_data);
|
||||
res_upload.post(function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
@ -409,7 +412,7 @@ add_test(function test_post_data_string() {
|
||||
|
||||
add_test(function test_post_data_object() {
|
||||
_("POST without data arg (uses resource.data) (object)");
|
||||
let res_upload = new AsyncResource("http://localhost:8080/upload");
|
||||
let res_upload = new AsyncResource(RES_UPLOAD_URL);
|
||||
res_upload.data = sample_data;
|
||||
res_upload.post(function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
@ -458,7 +461,7 @@ add_test(function test_weave_timestamp() {
|
||||
|
||||
add_test(function test_get_no_headers() {
|
||||
_("GET: no special request headers");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.get(function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(content, '{}');
|
||||
@ -468,7 +471,7 @@ add_test(function test_get_no_headers() {
|
||||
|
||||
add_test(function test_put_default_content_type() {
|
||||
_("PUT: Content-Type defaults to text/plain");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.put('data', function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(content, JSON.stringify({"content-type": "text/plain"}));
|
||||
@ -478,7 +481,7 @@ add_test(function test_put_default_content_type() {
|
||||
|
||||
add_test(function test_post_default_content_type() {
|
||||
_("POST: Content-Type defaults to text/plain");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.post('data', function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(content, JSON.stringify({"content-type": "text/plain"}));
|
||||
@ -488,7 +491,7 @@ add_test(function test_post_default_content_type() {
|
||||
|
||||
add_test(function test_setHeader() {
|
||||
_("setHeader(): setting simple header");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.setHeader('X-What-Is-Weave', 'awesome');
|
||||
do_check_eq(res_headers.headers['x-what-is-weave'], 'awesome');
|
||||
res_headers.get(function (error, content) {
|
||||
@ -500,7 +503,7 @@ add_test(function test_setHeader() {
|
||||
|
||||
add_test(function test_setHeader_overwrite() {
|
||||
_("setHeader(): setting multiple headers, overwriting existing header");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.setHeader('X-WHAT-is-Weave', 'more awesomer');
|
||||
res_headers.setHeader('X-Another-Header', 'hello world');
|
||||
do_check_eq(res_headers.headers['x-what-is-weave'], 'more awesomer');
|
||||
@ -516,7 +519,7 @@ add_test(function test_setHeader_overwrite() {
|
||||
|
||||
add_test(function test_headers_object() {
|
||||
_("Setting headers object");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.headers = {};
|
||||
res_headers.get(function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
@ -527,7 +530,7 @@ add_test(function test_headers_object() {
|
||||
|
||||
add_test(function test_put_override_content_type() {
|
||||
_("PUT: override default Content-Type");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.setHeader('Content-Type', 'application/foobar');
|
||||
do_check_eq(res_headers.headers['content-type'], 'application/foobar');
|
||||
res_headers.put('data', function (error, content) {
|
||||
@ -539,7 +542,7 @@ add_test(function test_put_override_content_type() {
|
||||
|
||||
add_test(function test_post_override_content_type() {
|
||||
_("POST: override default Content-Type");
|
||||
let res_headers = new AsyncResource("http://localhost:8080/headers");
|
||||
let res_headers = new AsyncResource(RES_HEADERS_URL);
|
||||
res_headers.setHeader('Content-Type', 'application/foobar');
|
||||
res_headers.post('data', function (error, content) {
|
||||
do_check_eq(error, null);
|
||||
|
@ -2,6 +2,8 @@ Cu.import("resource://services-sync/constants.js");
|
||||
Cu.import("resource://services-sync/resource.js");
|
||||
Cu.import("resource://services-sync/service.js");
|
||||
|
||||
const TEST_GET_URL = "http://localhost:8080/1.1/johndoe/storage/meta/global";
|
||||
|
||||
function test_resource_user_agent() {
|
||||
let meta_global = new ServerWBO('global');
|
||||
|
||||
@ -23,8 +25,8 @@ function test_resource_user_agent() {
|
||||
"/1.1/johndoe/storage/meta/global": uaHandler(meta_global.handler()),
|
||||
});
|
||||
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Weave.Service.username = "johndoe";
|
||||
Weave.Service.password = "ilovejane";
|
||||
|
||||
@ -43,7 +45,7 @@ function test_resource_user_agent() {
|
||||
|
||||
function test_desktop_post(next) {
|
||||
_("Testing direct Resource POST.");
|
||||
let r = new AsyncResource("http://localhost:8080/1.1/johndoe/storage/meta/global");
|
||||
let r = new AsyncResource(TEST_GET_URL);
|
||||
r.post("foo=bar", function (error, content) {
|
||||
_("User-Agent: " + ua);
|
||||
do_check_eq(ua, expectedUA + ".desktop");
|
||||
@ -55,7 +57,7 @@ function test_resource_user_agent() {
|
||||
function test_desktop_get(next) {
|
||||
_("Testing async.");
|
||||
Svc.Prefs.set("client.type", "desktop");
|
||||
let r = new AsyncResource("http://localhost:8080/1.1/johndoe/storage/meta/global");
|
||||
let r = new AsyncResource(TEST_GET_URL);
|
||||
r.get(function(error, content) {
|
||||
_("User-Agent: " + ua);
|
||||
do_check_eq(ua, expectedUA + ".desktop");
|
||||
@ -67,7 +69,7 @@ function test_resource_user_agent() {
|
||||
function test_mobile_get(next) {
|
||||
_("Testing mobile.");
|
||||
Svc.Prefs.set("client.type", "mobile");
|
||||
let r = new AsyncResource("http://localhost:8080/1.1/johndoe/storage/meta/global");
|
||||
let r = new AsyncResource(TEST_GET_URL);
|
||||
r.get(function (error, content) {
|
||||
_("User-Agent: " + ua);
|
||||
do_check_eq(ua, expectedUA + ".mobile");
|
||||
|
@ -5,6 +5,8 @@ Cu.import("resource://services-sync/rest.js");
|
||||
Cu.import("resource://services-sync/log4moz.js");
|
||||
Cu.import("resource://gre/modules/NetUtil.jsm");
|
||||
|
||||
const TEST_RESOURCE_URL = TEST_SERVER_URL + "resource";
|
||||
|
||||
function run_test() {
|
||||
Log4Moz.repository.getLogger("Sync.RESTRequest").level = Log4Moz.Level.Trace;
|
||||
initTestLogging();
|
||||
@ -89,7 +91,7 @@ add_test(function test_simple_get() {
|
||||
let handler = httpd_handler(200, "OK", "Huzzah!");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let uri = "http://localhost:8080/resource";
|
||||
let uri = TEST_RESOURCE_URL;
|
||||
let request = new RESTRequest(uri).get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
|
||||
@ -111,7 +113,7 @@ add_test(function test_get() {
|
||||
let handler = httpd_handler(200, "OK", "Huzzah!");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
do_check_eq(request.status, request.NOT_SENT);
|
||||
|
||||
request.onProgress = request.onComplete = function () {
|
||||
@ -160,7 +162,7 @@ add_test(function test_put() {
|
||||
let handler = httpd_handler(200, "OK", "Got it!");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
do_check_eq(request.status, request.NOT_SENT);
|
||||
|
||||
request.onProgress = request.onComplete = function () {
|
||||
@ -209,7 +211,7 @@ add_test(function test_post() {
|
||||
let handler = httpd_handler(200, "OK", "Got it!");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
do_check_eq(request.status, request.NOT_SENT);
|
||||
|
||||
request.onProgress = request.onComplete = function () {
|
||||
@ -258,7 +260,7 @@ add_test(function test_delete() {
|
||||
let handler = httpd_handler(200, "OK", "Got it!");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
do_check_eq(request.status, request.NOT_SENT);
|
||||
|
||||
request.onProgress = request.onComplete = function () {
|
||||
@ -304,7 +306,7 @@ add_test(function test_get_404() {
|
||||
let handler = httpd_handler(404, "Not Found", "Cannae find it!");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
|
||||
@ -330,7 +332,7 @@ add_test(function test_put_json() {
|
||||
injson: "format",
|
||||
number: 42
|
||||
};
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.put(sample_data, function (error) {
|
||||
do_check_eq(error, null);
|
||||
|
||||
@ -360,7 +362,7 @@ add_test(function test_post_json() {
|
||||
injson: "format",
|
||||
number: 42
|
||||
};
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.post(sample_data, function (error) {
|
||||
do_check_eq(error, null);
|
||||
|
||||
@ -384,7 +386,7 @@ add_test(function test_put_override_content_type() {
|
||||
let handler = httpd_handler(200, "OK");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.setHeader("Content-Type", "application/lolcat");
|
||||
request.put("O HAI!!1!", function (error) {
|
||||
do_check_eq(error, null);
|
||||
@ -409,7 +411,7 @@ add_test(function test_post_override_content_type() {
|
||||
let handler = httpd_handler(200, "OK");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.setHeader("Content-Type", "application/lolcat");
|
||||
request.post("O HAI!!1!", function (error) {
|
||||
do_check_eq(error, null);
|
||||
@ -439,7 +441,7 @@ add_test(function test_get_no_headers() {
|
||||
"connection", "pragma", "cache-control",
|
||||
"content-length"];
|
||||
|
||||
new RESTRequest("http://localhost:8080/resource").get(function (error) {
|
||||
new RESTRequest(TEST_RESOURCE_URL).get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -465,7 +467,7 @@ add_test(function test_changing_uri() {
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/the-wrong-resource");
|
||||
request.uri = Utils.makeURI("http://localhost:8080/resource");
|
||||
request.uri = Utils.makeURI(TEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -480,7 +482,7 @@ add_test(function test_request_setHeader() {
|
||||
let handler = httpd_handler(200, "OK");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
|
||||
request.setHeader("X-What-Is-Weave", "awesome");
|
||||
request.setHeader("X-WHAT-is-Weave", "more awesomer");
|
||||
@ -509,7 +511,7 @@ add_test(function test_response_headers() {
|
||||
response.setStatusLine(request.httpVersion, 200, "OK");
|
||||
}
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
@ -529,7 +531,7 @@ add_test(function test_response_headers() {
|
||||
* (e.g. NS_ERROR_CONNECTION_REFUSED).
|
||||
*/
|
||||
add_test(function test_connection_refused() {
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.onProgress = function onProgress() {
|
||||
do_throw("Shouldn't have called request.onProgress()!");
|
||||
};
|
||||
@ -551,7 +553,7 @@ add_test(function test_abort() {
|
||||
}
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
|
||||
// Aborting a request that hasn't been sent yet is pointless and will throw.
|
||||
do_check_throws(function () {
|
||||
@ -591,7 +593,7 @@ add_test(function test_timeout() {
|
||||
};
|
||||
server.start(8080);
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.timeout = 0.1; // 100 milliseconds
|
||||
request.get(function (error) {
|
||||
do_check_eq(error.result, Cr.NS_ERROR_NET_TIMEOUT);
|
||||
@ -609,7 +611,7 @@ add_test(function test_exception_in_onProgress() {
|
||||
let handler = httpd_handler(200, "OK", "Foobar");
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new RESTRequest("http://localhost:8080/resource");
|
||||
let request = new RESTRequest(TEST_RESOURCE_URL);
|
||||
request.onProgress = function onProgress() {
|
||||
it.does.not.exist();
|
||||
};
|
||||
|
@ -46,7 +46,8 @@ function setUp() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "sekrit";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
new FakeCryptoService();
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,8 @@ add_test(function test_change_password() {
|
||||
}
|
||||
|
||||
try {
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Weave.Service.username = "johndoe";
|
||||
Weave.Service.password = "ilovejane";
|
||||
|
||||
|
@ -12,7 +12,7 @@ function run_test() {
|
||||
"/user/1.0/vuuf3eqgloxpxmzph27f5a6ve7gzlrms": httpd_handler(200, "OK", "1")
|
||||
});
|
||||
try {
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
|
||||
_("A 404 will be recorded as 'generic-server-error'");
|
||||
do_check_eq(Service.checkAccount("jimdoe"), "generic-server-error");
|
||||
|
@ -15,7 +15,7 @@ function test_findCluster() {
|
||||
_("Test Service._findCluster()");
|
||||
let server;
|
||||
try {
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.username = "johndoe";
|
||||
|
||||
_("_findCluster() throws on network errors (e.g. connection refused).");
|
||||
@ -73,7 +73,7 @@ function test_setCluster() {
|
||||
"/user/1.0/jimdoe/node/weave": httpd_handler(200, "OK", "null")
|
||||
});
|
||||
try {
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.username = "johndoe";
|
||||
|
||||
_("Check initial state.");
|
||||
@ -105,7 +105,7 @@ function test_updateCluster() {
|
||||
"/user/1.0/janedoe/node/weave": httpd_handler(200, "OK", "http://weave.cluster.url/")
|
||||
});
|
||||
try {
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.username = "johndoe";
|
||||
|
||||
_("Check initial state.");
|
||||
|
@ -26,7 +26,7 @@ function run_test() {
|
||||
"/user/1.0/vz6fhecgw5t3sgx3a4cektoiokyczkqd": send(500, "Server Error", "Server Error")
|
||||
});
|
||||
try {
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
|
||||
_("Create an account.");
|
||||
let res = Service.createAccount("john@doe.com", "mysecretpw",
|
||||
|
@ -63,8 +63,8 @@ add_test(function v4_upgrade() {
|
||||
Status.resetSync();
|
||||
|
||||
_("Logging in.");
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
Weave.Service.login("johndoe", "ilovejane", passphrase);
|
||||
do_check_true(Weave.Service.isLoggedIn);
|
||||
@ -99,8 +99,8 @@ add_test(function v4_upgrade() {
|
||||
_("Syncing afresh...");
|
||||
Weave.Service.logout();
|
||||
CollectionKeys.clear();
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
meta_global.payload = JSON.stringify({"syncID": "foooooooooooooobbbbbbbbbbbb",
|
||||
"storageVersion": STORAGE_VERSION});
|
||||
collections.meta = Date.now() / 1000;
|
||||
@ -239,8 +239,8 @@ add_test(function v5_upgrade() {
|
||||
Weave.Service.password = "ilovejane";
|
||||
Weave.Service.passphrase = passphrase;
|
||||
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
//
|
||||
// Test an upgrade where the contents of the server would cause us to error
|
||||
|
@ -13,7 +13,8 @@ let collections = {steam: 65.11328,
|
||||
function run_test() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
Log4Moz.repository.getLogger("Sync.Service").level = Log4Moz.Level.Trace;
|
||||
Log4Moz.repository.getLogger("Sync.StorageRequest").level = Log4Moz.Level.Trace;
|
||||
|
@ -39,8 +39,8 @@ add_test(function test_offline() {
|
||||
});
|
||||
|
||||
function setup() {
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
let janeHelper = track_collections_helper();
|
||||
let janeU = janeHelper.with_updated_collection;
|
||||
|
@ -65,7 +65,7 @@ function run_test() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = JAPANESE;
|
||||
Service.passphrase = "cantentsveryrelevantabbbb";
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
|
||||
try {
|
||||
_("Try to log in with the password.");
|
||||
|
@ -71,7 +71,9 @@ add_test(function test_removeClientData() {
|
||||
Service.startOver();
|
||||
do_check_false(engine.removed);
|
||||
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
|
||||
do_check_false(engine.removed);
|
||||
Service.startOver();
|
||||
do_check_true(engine.removed);
|
||||
|
@ -32,8 +32,8 @@ function run_test() {
|
||||
|
||||
try {
|
||||
_("Set up test fixtures.");
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Weave.Service.username = "johndoe";
|
||||
Weave.Service.password = "ilovejane";
|
||||
Weave.Service.passphrase = "foo";
|
||||
|
@ -61,8 +61,8 @@ function run_test() {
|
||||
|
||||
try {
|
||||
_("Log in.");
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
_("Checking Status.sync with no credentials.");
|
||||
Weave.Service.verifyAndFetchSymmetricKeys();
|
||||
@ -77,8 +77,8 @@ function run_test() {
|
||||
let syncKey = Weave.Service.passphrase;
|
||||
Weave.Service.startOver();
|
||||
|
||||
Weave.Service.serverURL = "http://localhost:8080/";
|
||||
Weave.Service.clusterURL = "http://localhost:8080/";
|
||||
Weave.Service.serverURL = TEST_SERVER_URL;
|
||||
Weave.Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Weave.Service.login("johndoe", "ilovejane", syncKey);
|
||||
do_check_true(Weave.Service.isLoggedIn);
|
||||
|
||||
|
@ -69,7 +69,8 @@ function setUp() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
// So that we can poke at meta/global.
|
||||
new FakeCryptoService();
|
||||
|
||||
|
@ -44,7 +44,7 @@ function run_test() {
|
||||
});
|
||||
|
||||
try {
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
|
||||
_("Force the initial state.");
|
||||
Status.service = STATUS_OK;
|
||||
|
@ -29,7 +29,8 @@ FakeCollection.prototype = {
|
||||
function setUpTestFixtures() {
|
||||
let cryptoService = new FakeCryptoService();
|
||||
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Service.username = "johndoe";
|
||||
Service.passphrase = "aabcdeabcdeabcdeabcdeabcde";
|
||||
}
|
||||
|
@ -158,7 +158,8 @@ function test_resetClient() {
|
||||
function test_wipeServer() {
|
||||
_("SyncEngine.wipeServer deletes server data and resets the client.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
let engine = makeSteamEngine();
|
||||
|
||||
const PAYLOAD = 42;
|
||||
|
@ -29,8 +29,8 @@ function createServerAndConfigureClient() {
|
||||
};
|
||||
|
||||
const USER = "foo";
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", USER);
|
||||
|
||||
let server = new SyncServer();
|
||||
@ -65,7 +65,8 @@ add_test(function test_syncStartup_emptyOrOutdatedGlobalsResetsSync() {
|
||||
_("SyncEngine._syncStartup resets sync and wipes server data if there's no or an outdated global record");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
// Some server side data that's going to be wiped
|
||||
@ -118,7 +119,8 @@ add_test(function test_syncStartup_serverHasNewerVersion() {
|
||||
_("SyncEngine._syncStartup ");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let global = new ServerWBO('global', {engines: {rotary: {version: 23456}}});
|
||||
let server = httpd_setup({
|
||||
@ -148,7 +150,8 @@ add_test(function test_syncStartup_syncIDMismatchResetsClient() {
|
||||
_("SyncEngine._syncStartup resets sync if syncIDs don't match");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let server = sync_httpd_setup({});
|
||||
|
||||
@ -185,7 +188,8 @@ add_test(function test_processIncoming_emptyServer() {
|
||||
_("SyncEngine._processIncoming working with an empty server backend");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let collection = new ServerCollection();
|
||||
|
||||
@ -210,7 +214,8 @@ add_test(function test_processIncoming_createFromServer() {
|
||||
_("SyncEngine._processIncoming creates new records from server data");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
generateNewKeys();
|
||||
@ -271,7 +276,8 @@ add_test(function test_processIncoming_reconcile() {
|
||||
_("SyncEngine._processIncoming updates local records");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let collection = new ServerCollection();
|
||||
|
||||
@ -590,7 +596,8 @@ add_test(function test_processIncoming_mobile_batchSize() {
|
||||
_("SyncEngine._processIncoming doesn't fetch everything at once on mobile clients");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Svc.Prefs.set("client.type", "mobile");
|
||||
|
||||
@ -659,7 +666,8 @@ add_test(function test_processIncoming_mobile_batchSize() {
|
||||
add_test(function test_processIncoming_store_toFetch() {
|
||||
_("If processIncoming fails in the middle of a batch on mobile, state is saved in toFetch and lastSync.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Svc.Prefs.set("client.type", "mobile");
|
||||
|
||||
@ -726,7 +734,8 @@ add_test(function test_processIncoming_store_toFetch() {
|
||||
add_test(function test_processIncoming_resume_toFetch() {
|
||||
_("toFetch and previousFailed items left over from previous syncs are fetched on the next sync, along with new items.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
const LASTSYNC = Date.now() / 1000;
|
||||
@ -794,7 +803,8 @@ add_test(function test_processIncoming_resume_toFetch() {
|
||||
add_test(function test_processIncoming_applyIncomingBatchSize_smaller() {
|
||||
_("Ensure that a number of incoming items less than applyIncomingBatchSize is still applied.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
// Engine that doesn't like the first and last record it's given.
|
||||
@ -848,7 +858,7 @@ add_test(function test_processIncoming_applyIncomingBatchSize_smaller() {
|
||||
add_test(function test_processIncoming_applyIncomingBatchSize_multiple() {
|
||||
_("Ensure that incoming items are applied according to applyIncomingBatchSize.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
const APPLY_BATCH_SIZE = 10;
|
||||
@ -900,7 +910,8 @@ add_test(function test_processIncoming_applyIncomingBatchSize_multiple() {
|
||||
add_test(function test_processIncoming_notify_count() {
|
||||
_("Ensure that failed records are reported only once.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
const APPLY_BATCH_SIZE = 5;
|
||||
@ -986,7 +997,8 @@ add_test(function test_processIncoming_notify_count() {
|
||||
add_test(function test_processIncoming_previousFailed() {
|
||||
_("Ensure that failed records are retried.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
Svc.Prefs.set("client.type", "mobile");
|
||||
|
||||
@ -1071,7 +1083,8 @@ add_test(function test_processIncoming_previousFailed() {
|
||||
add_test(function test_processIncoming_failed_records() {
|
||||
_("Ensure that failed records from _reconcile and applyIncomingBatch are refetched.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
// Let's create three and a bit batches worth of server side records.
|
||||
@ -1205,7 +1218,8 @@ add_test(function test_processIncoming_decrypt_failed() {
|
||||
_("Ensure that records failing to decrypt are either replaced or refetched.");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
// Some good and some bogus records. One doesn't contain valid JSON,
|
||||
@ -1282,7 +1296,8 @@ add_test(function test_uploadOutgoing_toEmptyServer() {
|
||||
_("SyncEngine._uploadOutgoing uploads new records to server");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let collection = new ServerCollection();
|
||||
collection._wbos.flying = new ServerWBO('flying');
|
||||
@ -1340,7 +1355,8 @@ add_test(function test_uploadOutgoing_failed() {
|
||||
_("SyncEngine._uploadOutgoing doesn't clear the tracker of objects that failed to upload.");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let collection = new ServerCollection();
|
||||
// We only define the "flying" WBO on the server, not the "scotsman"
|
||||
@ -1402,7 +1418,8 @@ add_test(function test_uploadOutgoing_MAX_UPLOAD_RECORDS() {
|
||||
_("SyncEngine._uploadOutgoing uploads in batches of MAX_UPLOAD_RECORDS");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let collection = new ServerCollection();
|
||||
|
||||
@ -1473,7 +1490,8 @@ add_test(function test_syncFinish_deleteByIds() {
|
||||
_("SyncEngine._syncFinish deletes server records slated for deletion (list of record IDs).");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let collection = new ServerCollection();
|
||||
collection._wbos.flying = new ServerWBO(
|
||||
@ -1514,7 +1532,8 @@ add_test(function test_syncFinish_deleteLotsInBatches() {
|
||||
_("SyncEngine._syncFinish deletes server records in batches of 100 (list of record IDs).");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
let collection = new ServerCollection();
|
||||
|
||||
@ -1585,7 +1604,8 @@ add_test(function test_sync_partialUpload() {
|
||||
_("SyncEngine.sync() keeps changedIDs that couldn't be uploaded.");
|
||||
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
let collection = new ServerCollection();
|
||||
@ -1658,7 +1678,8 @@ add_test(function test_sync_partialUpload() {
|
||||
add_test(function test_canDecrypt_noCryptoKeys() {
|
||||
_("SyncEngine.canDecrypt returns false if the engine fails to decrypt items on the server, e.g. due to a missing crypto key collection.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
// Wipe CollectionKeys so we can test the desired scenario.
|
||||
@ -1686,7 +1707,8 @@ add_test(function test_canDecrypt_noCryptoKeys() {
|
||||
add_test(function test_canDecrypt_true() {
|
||||
_("SyncEngine.canDecrypt returns true if the engine can decrypt the items on the server.");
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
// Set up CollectionKeys, as service.js does.
|
||||
@ -1714,7 +1736,8 @@ add_test(function test_canDecrypt_true() {
|
||||
|
||||
add_test(function test_syncapplied_observer() {
|
||||
let syncTesting = new SyncTestingInfrastructure();
|
||||
Svc.Prefs.set("clusterURL", "http://localhost:8080/");
|
||||
Svc.Prefs.set("serverURL", TEST_SERVER_URL);
|
||||
Svc.Prefs.set("clusterURL", TEST_CLUSTER_URL);
|
||||
Svc.Prefs.set("username", "foo");
|
||||
|
||||
const NUMBER_OF_RECORDS = 10;
|
||||
|
@ -52,7 +52,7 @@ function setUp() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
|
||||
generateNewKeys();
|
||||
let serverKeys = CollectionKeys.asWBO("crypto", "keys");
|
||||
@ -667,7 +667,7 @@ add_test(function test_no_sync_node() {
|
||||
let server = sync_httpd_setup();
|
||||
setUp();
|
||||
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
|
||||
Service.sync();
|
||||
do_check_eq(Status.sync, NO_SYNC_NODE_FOUND);
|
||||
@ -852,8 +852,8 @@ add_test(function test_loginError_recoverable_reschedules() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Service.persistLogin();
|
||||
Status.resetSync(); // reset Status.login
|
||||
|
||||
@ -896,8 +896,8 @@ add_test(function test_loginError_fatal_clearsTriggers() {
|
||||
Service.username = "johndoe";
|
||||
Service.password = "ilovejane";
|
||||
Service.passphrase = "abcdeabcdeabcdeabcdeabcdea";
|
||||
Service.serverURL = "http://localhost:8080/";
|
||||
Service.clusterURL = "http://localhost:8080/";
|
||||
Service.serverURL = TEST_SERVER_URL;
|
||||
Service.clusterURL = TEST_CLUSTER_URL;
|
||||
Service.persistLogin();
|
||||
Status.resetSync(); // reset Status.login
|
||||
|
||||
|
@ -7,6 +7,8 @@ Cu.import("resource://services-sync/identity.js");
|
||||
Cu.import("resource://services-sync/constants.js");
|
||||
Cu.import("resource://services-sync/log4moz.js");
|
||||
|
||||
const STORAGE_REQUEST_RESOURCE_URL = TEST_SERVER_URL + "resource";
|
||||
|
||||
function run_test() {
|
||||
Log4Moz.repository.getLogger("Sync.RESTRequest").level = Log4Moz.Level.Trace;
|
||||
initTestLogging();
|
||||
@ -22,7 +24,7 @@ add_test(function test_user_agent_desktop() {
|
||||
" FxSync/" + WEAVE_VERSION + "." +
|
||||
Services.appinfo.appBuildID + ".desktop";
|
||||
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
request.onComplete = function onComplete(error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -41,7 +43,7 @@ add_test(function test_user_agent_mobile() {
|
||||
" FxSync/" + WEAVE_VERSION + "." +
|
||||
Services.appinfo.appBuildID + ".mobile";
|
||||
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -59,7 +61,7 @@ add_test(function test_auth() {
|
||||
id.password = "ilovejane";
|
||||
ID.set("WeaveID", id);
|
||||
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -82,7 +84,7 @@ add_test(function test_weave_timestamp() {
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
do_check_eq(SyncStorageRequest.serverTime, undefined);
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -108,7 +110,7 @@ add_test(function test_weave_backoff() {
|
||||
backoffInterval = subject;
|
||||
});
|
||||
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -133,7 +135,7 @@ add_test(function test_weave_quota_notice() {
|
||||
quotaValue = subject;
|
||||
});
|
||||
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 200);
|
||||
@ -158,7 +160,7 @@ add_test(function test_weave_quota_error() {
|
||||
}
|
||||
Svc.Obs.add("weave:service:quota:remaining", onQuota);
|
||||
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
request.get(function (error) {
|
||||
do_check_eq(error, null);
|
||||
do_check_eq(this.response.status, 400);
|
||||
@ -177,7 +179,7 @@ add_test(function test_abort() {
|
||||
}
|
||||
let server = httpd_setup({"/resource": handler});
|
||||
|
||||
let request = new SyncStorageRequest("http://localhost:8080/resource");
|
||||
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
|
||||
|
||||
// Aborting a request that hasn't been sent yet is pointless and will throw.
|
||||
do_check_throws(function () {
|
||||
|
@ -93,6 +93,7 @@ const SYNC_START_OVER = "start-over";
|
||||
let TPS =
|
||||
{
|
||||
_waitingForSync: false,
|
||||
_isTracking: false,
|
||||
_test: null,
|
||||
_currentAction: -1,
|
||||
_currentPhase: -1,
|
||||
@ -148,6 +149,15 @@ let TPS =
|
||||
}, 1000, this, "postsync");
|
||||
}
|
||||
break;
|
||||
|
||||
case "weave:engine:start-tracking":
|
||||
this._isTracking = true;
|
||||
break;
|
||||
|
||||
case "weave:engine:stop-tracking":
|
||||
this._isTracking = false;
|
||||
break;
|
||||
|
||||
case "sessionstore-windows-restored":
|
||||
Utils.nextTick(this.RunNextTestAction, this);
|
||||
break;
|
||||
@ -533,7 +543,31 @@ let TPS =
|
||||
return;
|
||||
}
|
||||
|
||||
// setup observers
|
||||
// Wait for Sync service to become ready.
|
||||
if (!Weave.Status.ready) {
|
||||
this.waitForEvent("weave:service:ready");
|
||||
}
|
||||
|
||||
// Always give Sync an extra tick to initialize. If we waited for the
|
||||
// service:ready event, this is required to ensure all handlers have
|
||||
// executed.
|
||||
Utils.nextTick(this._executeTestPhase.bind(this, file, phase, settings));
|
||||
} catch(e) {
|
||||
this.DumpError("Exception caught: " + Utils.exceptionStr(e));
|
||||
return;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Executes a single test phase.
|
||||
*
|
||||
* This is called by RunTestPhase() after the environment is validated.
|
||||
*/
|
||||
_executeTestPhase: function _executeTestPhase(file, phase, settings) {
|
||||
try {
|
||||
// TODO Unregister observers on unload (bug 721283).
|
||||
Services.obs.addObserver(this, "weave:engine:start-tracking", true);
|
||||
Services.obs.addObserver(this, "weave:engine:stop-tracking", true);
|
||||
Services.obs.addObserver(this, "weave:service:sync:finish", true);
|
||||
Services.obs.addObserver(this, "weave:service:sync:error", true);
|
||||
Services.obs.addObserver(this, "sessionstore-windows-restored", true);
|
||||
@ -669,6 +703,41 @@ let TPS =
|
||||
Logger.logInfo("set privateBrowsingEnabled: " + options);
|
||||
},
|
||||
|
||||
/**
|
||||
* Synchronously wait for the named event to be observed.
|
||||
*
|
||||
* When the event is observed, the function will wait an extra tick before
|
||||
* returning.
|
||||
*
|
||||
* @param name
|
||||
* String event to wait for.
|
||||
*/
|
||||
waitForEvent:function waitForEvent(name) {
|
||||
Logger.logInfo("Waiting for " + name + "...");
|
||||
let cb = Async.makeSpinningCallback();
|
||||
Svc.Obs.add(name, cb);
|
||||
cb.wait();
|
||||
Svc.Obs.remove(name, cb);
|
||||
Logger.logInfo(name + " observed!");
|
||||
|
||||
let cb = Async.makeSpinningCallback();
|
||||
Utils.nextTick(cb);
|
||||
cb.wait();
|
||||
},
|
||||
|
||||
/**
|
||||
* Waits for Sync to start tracking before returning.
|
||||
*/
|
||||
waitForTracking: function waitForTracking() {
|
||||
if (!this._isTracking) {
|
||||
this.waitForEvent("weave:engine:start-tracking");
|
||||
}
|
||||
|
||||
let cb = Async.makeSyncCallback();
|
||||
Utils.nextTick(cb);
|
||||
Async.waitForSyncCallback(cb);
|
||||
},
|
||||
|
||||
/**
|
||||
* Reset the client and server to an empty/pure state.
|
||||
*
|
||||
@ -689,6 +758,8 @@ let TPS =
|
||||
Service.wipeServer();
|
||||
Service.resetClient();
|
||||
Service.login();
|
||||
|
||||
this.waitForTracking();
|
||||
},
|
||||
|
||||
Login: function Login(force) {
|
||||
@ -734,6 +805,8 @@ let TPS =
|
||||
Logger.AssertEqual(Weave.Status.service, Weave.STATUS_OK, "Weave status not OK");
|
||||
Weave.Svc.Obs.notify("weave:service:setup-complete");
|
||||
this._loggedIn = true;
|
||||
|
||||
this.waitForTracking();
|
||||
},
|
||||
|
||||
Sync: function TPS__Sync(options) {
|
||||
@ -767,6 +840,14 @@ let TPS =
|
||||
this.Login();
|
||||
Weave.Service.wipeServer();
|
||||
},
|
||||
|
||||
/**
|
||||
* Action which ensures changes are being tracked before returning.
|
||||
*/
|
||||
EnsureTracking: function EnsureTracking() {
|
||||
this.Login(false);
|
||||
this.waitForTracking();
|
||||
}
|
||||
};
|
||||
|
||||
var Addons = {
|
||||
|
@ -50,6 +50,7 @@
|
||||
#endif
|
||||
|
||||
#include "nsAutoPtr.h"
|
||||
#include "nsThreadUtils.h"
|
||||
|
||||
#include "prlog.h"
|
||||
|
||||
@ -151,12 +152,76 @@ static DllBlockInfo sWindowsDllBlocklist[] = {
|
||||
// define this for very verbose dll load debug spew
|
||||
#undef DEBUG_very_verbose
|
||||
|
||||
extern bool gInXPCOMLoadOnMainThread;
|
||||
|
||||
namespace {
|
||||
|
||||
typedef NTSTATUS (NTAPI *LdrLoadDll_func) (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileName, PHANDLE handle);
|
||||
|
||||
static LdrLoadDll_func stub_LdrLoadDll = 0;
|
||||
|
||||
template <class T>
|
||||
struct RVAMap {
|
||||
RVAMap(HANDLE map, DWORD offset) {
|
||||
SYSTEM_INFO info;
|
||||
GetSystemInfo(&info);
|
||||
|
||||
DWORD alignedOffset = (offset / info.dwAllocationGranularity) *
|
||||
info.dwAllocationGranularity;
|
||||
|
||||
NS_ASSERTION(offset - alignedOffset < info.dwAllocationGranularity, "Wtf");
|
||||
|
||||
void* mRealView = ::MapViewOfFile(map, FILE_MAP_READ, 0, alignedOffset,
|
||||
sizeof(T) + (offset - alignedOffset));
|
||||
|
||||
mMappedView = reinterpret_cast<T*>((char*)mRealView + (offset - alignedOffset));
|
||||
}
|
||||
~RVAMap() {
|
||||
if (mRealView) {
|
||||
::UnmapViewOfFile(mRealView);
|
||||
}
|
||||
}
|
||||
operator const T*() const { return mMappedView; }
|
||||
const T* operator->() const { return mMappedView; }
|
||||
private:
|
||||
const T* mMappedView;
|
||||
void* mRealView;
|
||||
};
|
||||
|
||||
bool
|
||||
CheckASLR(const wchar_t* path)
|
||||
{
|
||||
bool retval = false;
|
||||
|
||||
HANDLE file = ::CreateFileW(path, GENERIC_READ, FILE_SHARE_READ,
|
||||
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
|
||||
NULL);
|
||||
if (file != INVALID_HANDLE_VALUE) {
|
||||
HANDLE map = ::CreateFileMappingW(file, NULL, PAGE_READONLY, 0, 0, NULL);
|
||||
if (map) {
|
||||
RVAMap<IMAGE_DOS_HEADER> peHeader(map, 0);
|
||||
if (peHeader) {
|
||||
RVAMap<IMAGE_NT_HEADERS> ntHeader(map, peHeader->e_lfanew);
|
||||
if (ntHeader) {
|
||||
// If the DLL has no code, permit it regardless of ASLR status.
|
||||
if (ntHeader->OptionalHeader.SizeOfCode == 0) {
|
||||
retval = true;
|
||||
}
|
||||
// Check to see if the DLL supports ASLR
|
||||
else if ((ntHeader->OptionalHeader.DllCharacteristics &
|
||||
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE) != 0) {
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
::CloseHandle(map);
|
||||
}
|
||||
::CloseHandle(file);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Some versions of Windows call LoadLibraryEx to get the version information
|
||||
* for a DLL, which causes our patched LdrLoadDll implementation to re-enter
|
||||
@ -225,6 +290,29 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
|
||||
int len = moduleFileName->Length / 2;
|
||||
wchar_t *fname = moduleFileName->Buffer;
|
||||
|
||||
// In Windows 8, the first parameter seems to be used for more than just the
|
||||
// path name. For example, its numerical value can be 1. Passing a non-valid
|
||||
// pointer to SearchPathW will cause a crash, so we need to check to see if we
|
||||
// are handed a valid pointer, and otherwise just pass NULL to SearchPathW.
|
||||
PWCHAR sanitizedFilePath = (intptr_t(filePath) < 1024) ? NULL : filePath;
|
||||
|
||||
// figure out the length of the string that we need
|
||||
DWORD pathlen = SearchPathW(sanitizedFilePath, fname, L".dll", 0, NULL, NULL);
|
||||
if (pathlen == 0) {
|
||||
// uh, we couldn't find the DLL at all, so...
|
||||
printf_stderr("LdrLoadDll: Blocking load of '%s' (SearchPathW didn't find it?)\n", dllName);
|
||||
return STATUS_DLL_NOT_FOUND;
|
||||
}
|
||||
|
||||
nsAutoArrayPtr<wchar_t> full_fname(new wchar_t[pathlen+1]);
|
||||
if (!full_fname) {
|
||||
// couldn't allocate memory?
|
||||
return STATUS_DLL_NOT_FOUND;
|
||||
}
|
||||
|
||||
// now actually grab it
|
||||
SearchPathW(sanitizedFilePath, fname, L".dll", pathlen+1, full_fname, NULL);
|
||||
|
||||
// The filename isn't guaranteed to be null terminated, but in practice
|
||||
// it always will be; ensure that this is so, and bail if not.
|
||||
// This is done instead of the more robust approach because of bug 527122,
|
||||
@ -305,29 +393,6 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
|
||||
goto continue_loading;
|
||||
}
|
||||
|
||||
// In Windows 8, the first parameter seems to be used for more than just the
|
||||
// path name. For example, its numerical value can be 1. Passing a non-valid
|
||||
// pointer to SearchPathW will cause a crash, so we need to check to see if we
|
||||
// are handed a valid pointer, and otherwise just pass NULL to SearchPathW.
|
||||
PWCHAR sanitizedFilePath = (intptr_t(filePath) < 1024) ? NULL : filePath;
|
||||
|
||||
// figure out the length of the string that we need
|
||||
DWORD pathlen = SearchPathW(sanitizedFilePath, fname, L".dll", 0, NULL, NULL);
|
||||
if (pathlen == 0) {
|
||||
// uh, we couldn't find the DLL at all, so...
|
||||
printf_stderr("LdrLoadDll: Blocking load of '%s' (SearchPathW didn't find it?)\n", dllName);
|
||||
return STATUS_DLL_NOT_FOUND;
|
||||
}
|
||||
|
||||
wchar_t *full_fname = (wchar_t*) malloc(sizeof(wchar_t)*(pathlen+1));
|
||||
if (!full_fname) {
|
||||
// couldn't allocate memory?
|
||||
return STATUS_DLL_NOT_FOUND;
|
||||
}
|
||||
|
||||
// now actually grab it
|
||||
SearchPathW(sanitizedFilePath, fname, L".dll", pathlen+1, full_fname, NULL);
|
||||
|
||||
DWORD zero;
|
||||
DWORD infoSize = GetFileVersionInfoSizeW(full_fname, &zero);
|
||||
|
||||
@ -351,8 +416,6 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
|
||||
load_ok = true;
|
||||
}
|
||||
}
|
||||
|
||||
free(full_fname);
|
||||
}
|
||||
|
||||
if (!load_ok) {
|
||||
@ -368,6 +431,14 @@ continue_loading:
|
||||
|
||||
NS_SetHasLoadedNewDLLs();
|
||||
|
||||
if (gInXPCOMLoadOnMainThread && NS_IsMainThread()) {
|
||||
// Check to ensure that the DLL has ASLR.
|
||||
if (!CheckASLR(full_fname)) {
|
||||
printf_stderr("LdrLoadDll: Blocking load of '%s'. XPCOM components must support ASLR.\n", dllName);
|
||||
return STATUS_DLL_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
return stub_LdrLoadDll(filePath, flags, moduleFileName, handle);
|
||||
}
|
||||
|
||||
|
@ -450,7 +450,7 @@ GfxInfo::GetFeatureStatusImpl(PRInt32 aFeature,
|
||||
if (aFeature == nsIGfxInfo::FEATURE_WEBGL_MSAA) {
|
||||
// Blacklist all ATI cards on OSX, except for
|
||||
// 0x6760 and 0x9488
|
||||
if (mAdapterVendorID == GfxDriverInfo::GetDeviceVendor(VendorATI) &&
|
||||
if (mAdapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorATI), nsCaseInsensitiveStringComparator()) &&
|
||||
(mAdapterDeviceID.LowerCaseEqualsLiteral("0x6760") ||
|
||||
mAdapterDeviceID.LowerCaseEqualsLiteral("0x9488"))) {
|
||||
*aStatus = nsIGfxInfo::FEATURE_NO_INFO;
|
||||
|
@ -963,10 +963,10 @@ GfxInfo::GetFeatureStatusImpl(PRInt32 aFeature,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
if (adapterVendorID != GfxDriverInfo::GetDeviceVendor(VendorIntel) &&
|
||||
adapterVendorID != GfxDriverInfo::GetDeviceVendor(VendorNVIDIA) &&
|
||||
adapterVendorID != GfxDriverInfo::GetDeviceVendor(VendorAMD) &&
|
||||
adapterVendorID != GfxDriverInfo::GetDeviceVendor(VendorATI) &&
|
||||
if (!adapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorIntel), nsCaseInsensitiveStringComparator()) &&
|
||||
!adapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), nsCaseInsensitiveStringComparator()) &&
|
||||
!adapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorAMD), nsCaseInsensitiveStringComparator()) &&
|
||||
!adapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorATI), nsCaseInsensitiveStringComparator()) &&
|
||||
// FIXME - these special hex values are currently used in xpcshell tests introduced by
|
||||
// bug 625160 patch 8/8. Maybe these tests need to be adjusted now that we're only whitelisting
|
||||
// intel/ati/nvidia.
|
||||
@ -988,7 +988,7 @@ GfxInfo::GetFeatureStatusImpl(PRInt32 aFeature,
|
||||
// whitelist them, actually we do know that this combination of device and driver version
|
||||
// works well.
|
||||
if (mWindowsVersion == gfxWindowsPlatform::kWindowsXP &&
|
||||
adapterVendorID == GfxDriverInfo::GetDeviceVendor(VendorNVIDIA) &&
|
||||
adapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), nsCaseInsensitiveStringComparator()) &&
|
||||
adapterDeviceID.LowerCaseEqualsLiteral("0x0861") && // GeForce 9400
|
||||
driverVersion == V(6,14,11,7756))
|
||||
{
|
||||
|
@ -47,6 +47,7 @@
|
||||
#include "nsCOMArray.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "nsString.h"
|
||||
#include "nsUnicharUtils.h"
|
||||
#include "mozilla/Services.h"
|
||||
#include "mozilla/Observer.h"
|
||||
#include "nsIObserver.h"
|
||||
@ -643,15 +644,15 @@ GfxInfoBase::FindBlocklistedDeviceInList(const nsTArray<GfxDriverInfo>& info,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (info[i].mAdapterVendor != GfxDriverInfo::GetDeviceVendor(VendorAll) &&
|
||||
info[i].mAdapterVendor != adapterVendorID) {
|
||||
if (!info[i].mAdapterVendor.Equals(GfxDriverInfo::GetDeviceVendor(VendorAll), nsCaseInsensitiveStringComparator()) &&
|
||||
!info[i].mAdapterVendor.Equals(adapterVendorID, nsCaseInsensitiveStringComparator())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (info[i].mDevices != GfxDriverInfo::allDevices && info[i].mDevices->Length()) {
|
||||
bool deviceMatches = false;
|
||||
for (PRUint32 j = 0; j < info[i].mDevices->Length(); j++) {
|
||||
if ((*info[i].mDevices)[j] == adapterDeviceID) {
|
||||
if ((*info[i].mDevices)[j].Equals(adapterDeviceID, nsCaseInsensitiveStringComparator())) {
|
||||
deviceMatches = true;
|
||||
break;
|
||||
}
|
||||
|
@ -87,6 +87,8 @@ using namespace mozilla;
|
||||
static PRLogModuleInfo *nsNativeModuleLoaderLog =
|
||||
PR_NewLogModule("nsNativeModuleLoader");
|
||||
|
||||
bool gInXPCOMLoadOnMainThread = false;
|
||||
|
||||
#define LOG(level, args) PR_LOG(nsNativeModuleLoaderLog, level, args)
|
||||
|
||||
NS_IMPL_QUERY_INTERFACE1(nsNativeModuleLoader,
|
||||
@ -167,7 +169,9 @@ nsNativeModuleLoader::LoadModule(FileLocation &aFile)
|
||||
|
||||
// We haven't loaded this module before
|
||||
|
||||
gInXPCOMLoadOnMainThread = true;
|
||||
rv = file->Load(&data.library);
|
||||
gInXPCOMLoadOnMainThread = false;
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
char errorMsg[1024] = "<unknown; can't get error from NSPR>";
|
||||
|
@ -45,7 +45,12 @@ include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
MODULE = xpcom
|
||||
|
||||
DIRS = external component bug656331_component
|
||||
DIRS = \
|
||||
external \
|
||||
component \
|
||||
bug656331_component \
|
||||
component_no_aslr \
|
||||
$(NULL)
|
||||
|
||||
ifeq ($(OS_ARCH),WINNT)
|
||||
DIRS += windows
|
||||
|
81
xpcom/tests/component_no_aslr/Makefile.in
Normal file
81
xpcom/tests/component_no_aslr/Makefile.in
Normal file
@ -0,0 +1,81 @@
|
||||
#
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public License Version
|
||||
# 1.1 (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
# http://www.mozilla.org/MPL/
|
||||
#
|
||||
# Software distributed under the License is distributed on an "AS IS" basis,
|
||||
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
# for the specific language governing rights and limitations under the
|
||||
# License.
|
||||
#
|
||||
# The Original Code is mozilla.org code.
|
||||
#
|
||||
# The Initial Developer of the Original Code is
|
||||
# Netscape Communications Corporation.
|
||||
# Portions created by the Initial Developer are Copyright (C) 1998
|
||||
# the Initial Developer. All Rights Reserved.
|
||||
#
|
||||
# Contributor(s):
|
||||
# Benjamin Smedberg <benjamin@smedbergs.us>
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the terms of
|
||||
# either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
# in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
# of those above. If you wish to allow use of your version of this file only
|
||||
# under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
# use your version of this file under the terms of the MPL, indicate your
|
||||
# decision by deleting the provisions above and replace them with the notice
|
||||
# and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
# the provisions above, a recipient may use your version of this file under
|
||||
# the terms of any one of the MPL, the GPL or the LGPL.
|
||||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
LIBRARY_NAME = testcompnoaslr
|
||||
IS_COMPONENT = 1
|
||||
CPPSRCS = TestComponent.cpp
|
||||
NO_DIST_INSTALL = 1
|
||||
FORCE_SHARED_LIB = 1
|
||||
|
||||
include $(topsrcdir)/config/config.mk
|
||||
|
||||
MANIFEST_FILE = testcompnoaslr.manifest
|
||||
|
||||
EXTRA_DSO_LDOPTS = \
|
||||
$(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
|
||||
$(XPCOM_FROZEN_LDOPTS) \
|
||||
$(NSPR_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
# Need to link with CoreFoundation on Mac
|
||||
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
|
||||
EXTRA_DSO_LDOPTS += \
|
||||
$(TK_LIBS) \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
LDFLAGS := $(filter-out -DYNAMICBASE,$(LDFLAGS)) -DYNAMICBASE:NO
|
||||
|
||||
DEFINES += -DLIBRARY_FILENAME="$(SHARED_LIBRARY)"
|
||||
|
||||
unittestlocation = xpcom/tests/unit
|
||||
|
||||
libs:: $(SHARED_LIBRARY)
|
||||
$(INSTALL) $^ $(testxpcobjdir)/$(unittestlocation)
|
||||
|
||||
libs:: $(MANIFEST_FILE)
|
||||
$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $< > $(testxpcobjdir)/$(unittestlocation)/$(<F)
|
65
xpcom/tests/component_no_aslr/TestComponent.cpp
Normal file
65
xpcom/tests/component_no_aslr/TestComponent.cpp
Normal file
@ -0,0 +1,65 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is
|
||||
* Netscape Communications Corporation.
|
||||
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Suresh Duddu <dp@netscape.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "mozilla/ModuleUtils.h"
|
||||
|
||||
#define NS_TESTING_CID \
|
||||
{ 0x335fb596, 0xe52d, 0x418f, \
|
||||
{ 0xb0, 0x1c, 0x1b, 0xf1, 0x6c, 0xe5, 0xe7, 0xe4 } }
|
||||
|
||||
NS_DEFINE_NAMED_CID(NS_TESTING_CID);
|
||||
|
||||
static nsresult
|
||||
DummyConstructorFunc(nsISupports* aOuter, const nsIID& aIID, void** aResult)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
static const mozilla::Module::CIDEntry kTestCIDs[] = {
|
||||
{ &kNS_TESTING_CID, false, NULL, DummyConstructorFunc },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static const mozilla::Module kTestModule = {
|
||||
mozilla::Module::kVersion,
|
||||
kTestCIDs
|
||||
};
|
||||
|
||||
NSMODULE_DEFN(dummy) = &kTestModule;
|
||||
|
||||
|
2
xpcom/tests/component_no_aslr/testcompnoaslr.manifest
Normal file
2
xpcom/tests/component_no_aslr/testcompnoaslr.manifest
Normal file
@ -0,0 +1,2 @@
|
||||
#filter substitution
|
||||
binary-component @LIBRARY_FILENAME@
|
10
xpcom/tests/unit/test_comp_no_aslr.js
Normal file
10
xpcom/tests/unit/test_comp_no_aslr.js
Normal file
@ -0,0 +1,10 @@
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
function run_test() {
|
||||
let manifest = do_get_file('testcompwithaslr.manifest');
|
||||
Components.manager.autoRegister(manifest);
|
||||
do_check_false("{335fb596-e52d-418f-b01c-1bf16ce5e7e4}" in Components.classesByID);
|
||||
}
|
@ -42,3 +42,5 @@ fail-if = os == "android"
|
||||
# Bug 676998: test fails consistently on Android
|
||||
fail-if = os == "android"
|
||||
[test_versioncomparator.js]
|
||||
[test_comp_no_aslr.js]
|
||||
fail-if = os != "win"
|
||||
|
Loading…
Reference in New Issue
Block a user