mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-28 23:31:56 +00:00
merge fx-team to mozilla-central a=merge
This commit is contained in:
commit
834b04df6d
@ -169,6 +169,9 @@ loop.store.ActiveRoomStore = (function() {
|
|||||||
case REST_ERRNOS.INVALID_TOKEN:
|
case REST_ERRNOS.INVALID_TOKEN:
|
||||||
case REST_ERRNOS.EXPIRED:
|
case REST_ERRNOS.EXPIRED:
|
||||||
return FAILURE_DETAILS.EXPIRED_OR_INVALID;
|
return FAILURE_DETAILS.EXPIRED_OR_INVALID;
|
||||||
|
case undefined:
|
||||||
|
// XHR errors reach here with errno as undefined
|
||||||
|
return FAILURE_DETAILS.COULD_NOT_CONNECT;
|
||||||
default:
|
default:
|
||||||
return FAILURE_DETAILS.UNKNOWN;
|
return FAILURE_DETAILS.UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -355,6 +358,7 @@ loop.store.ActiveRoomStore = (function() {
|
|||||||
this.setStoreState({
|
this.setStoreState({
|
||||||
roomState: ROOM_STATES.GATHER,
|
roomState: ROOM_STATES.GATHER,
|
||||||
roomToken: actionData.token,
|
roomToken: actionData.token,
|
||||||
|
roomCryptoKey: actionData.cryptoKey,
|
||||||
standalone: true
|
standalone: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -101,6 +101,11 @@ loop.StandaloneMozLoop = (function(mozL10n) {
|
|||||||
}
|
}
|
||||||
}.bind(this);
|
}.bind(this);
|
||||||
|
|
||||||
|
this._xhrReq.onerror = function() {
|
||||||
|
var request = this._xhrReq;
|
||||||
|
failureHandler(callback, request);
|
||||||
|
}.bind(this);
|
||||||
|
|
||||||
this._xhrReq.send();
|
this._xhrReq.send();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -163,6 +163,8 @@ loop.standaloneRoomViews = (function(mozL10n) {
|
|||||||
{ clientShortname: mozL10n.get("clientShortname2") });
|
{ clientShortname: mozL10n.get("clientShortname2") });
|
||||||
case FAILURE_DETAILS.ICE_FAILED:
|
case FAILURE_DETAILS.ICE_FAILED:
|
||||||
return mozL10n.get("rooms_ice_failure_message");
|
return mozL10n.get("rooms_ice_failure_message");
|
||||||
|
case FAILURE_DETAILS.COULD_NOT_CONNECT:
|
||||||
|
return mozL10n.get("rooms_server_unavailable_message");
|
||||||
default:
|
default:
|
||||||
return mozL10n.get("status_error");
|
return mozL10n.get("status_error");
|
||||||
}
|
}
|
||||||
@ -447,15 +449,19 @@ loop.standaloneRoomViews = (function(mozL10n) {
|
|||||||
componentWillUpdate: function(nextProps, nextState) {
|
componentWillUpdate: function(nextProps, nextState) {
|
||||||
if (this.state.roomState !== ROOM_STATES.READY &&
|
if (this.state.roomState !== ROOM_STATES.READY &&
|
||||||
nextState.roomState === ROOM_STATES.READY) {
|
nextState.roomState === ROOM_STATES.READY) {
|
||||||
var roomName = nextState.roomName ||
|
var roomName = nextState.roomName;
|
||||||
this.state.roomName ||
|
if (!roomName && nextState.roomContextUrls) {
|
||||||
this.state.roomContextUrls[0].description ||
|
roomName = nextState.roomContextUrls[0].description ||
|
||||||
this.state.roomContextUrls[0].location;
|
nextState.roomContextUrls[0].location;
|
||||||
|
}
|
||||||
this.setTitle(mozL10n.get("standalone_title_with_room_name", {
|
if (!roomName) {
|
||||||
roomName: roomName,
|
this.setTitle(mozL10n.get("clientShortname2"));
|
||||||
clientShortname: mozL10n.get("clientShortname2")
|
} else {
|
||||||
}));
|
this.setTitle(mozL10n.get("standalone_title_with_room_name", {
|
||||||
|
roomName: roomName,
|
||||||
|
clientShortname: mozL10n.get("clientShortname2")
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.state.roomState !== ROOM_STATES.MEDIA_WAIT &&
|
if (this.state.roomState !== ROOM_STATES.MEDIA_WAIT &&
|
||||||
|
@ -163,6 +163,8 @@ loop.standaloneRoomViews = (function(mozL10n) {
|
|||||||
{ clientShortname: mozL10n.get("clientShortname2") });
|
{ clientShortname: mozL10n.get("clientShortname2") });
|
||||||
case FAILURE_DETAILS.ICE_FAILED:
|
case FAILURE_DETAILS.ICE_FAILED:
|
||||||
return mozL10n.get("rooms_ice_failure_message");
|
return mozL10n.get("rooms_ice_failure_message");
|
||||||
|
case FAILURE_DETAILS.COULD_NOT_CONNECT:
|
||||||
|
return mozL10n.get("rooms_server_unavailable_message");
|
||||||
default:
|
default:
|
||||||
return mozL10n.get("status_error");
|
return mozL10n.get("status_error");
|
||||||
}
|
}
|
||||||
@ -447,15 +449,19 @@ loop.standaloneRoomViews = (function(mozL10n) {
|
|||||||
componentWillUpdate: function(nextProps, nextState) {
|
componentWillUpdate: function(nextProps, nextState) {
|
||||||
if (this.state.roomState !== ROOM_STATES.READY &&
|
if (this.state.roomState !== ROOM_STATES.READY &&
|
||||||
nextState.roomState === ROOM_STATES.READY) {
|
nextState.roomState === ROOM_STATES.READY) {
|
||||||
var roomName = nextState.roomName ||
|
var roomName = nextState.roomName;
|
||||||
this.state.roomName ||
|
if (!roomName && nextState.roomContextUrls) {
|
||||||
this.state.roomContextUrls[0].description ||
|
roomName = nextState.roomContextUrls[0].description ||
|
||||||
this.state.roomContextUrls[0].location;
|
nextState.roomContextUrls[0].location;
|
||||||
|
}
|
||||||
this.setTitle(mozL10n.get("standalone_title_with_room_name", {
|
if (!roomName) {
|
||||||
roomName: roomName,
|
this.setTitle(mozL10n.get("clientShortname2"));
|
||||||
clientShortname: mozL10n.get("clientShortname2")
|
} else {
|
||||||
}));
|
this.setTitle(mozL10n.get("standalone_title_with_room_name", {
|
||||||
|
roomName: roomName,
|
||||||
|
clientShortname: mozL10n.get("clientShortname2")
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.state.roomState !== ROOM_STATES.MEDIA_WAIT &&
|
if (this.state.roomState !== ROOM_STATES.MEDIA_WAIT &&
|
||||||
|
@ -64,6 +64,7 @@ rooms_media_denied_message=We could not get access to your microphone or camera.
|
|||||||
room_information_failure_not_available=No information about this conversation is available. Please request a new link from the person who sent it to you.
|
room_information_failure_not_available=No information about this conversation is available. Please request a new link from the person who sent it to you.
|
||||||
room_information_failure_unsupported_browser=Your browser cannot access any information about this conversation. Please make sure you're using the latest version.
|
room_information_failure_unsupported_browser=Your browser cannot access any information about this conversation. Please make sure you're using the latest version.
|
||||||
rooms_ice_failure_message=Connection failed. Your firewall may be blocking calls.
|
rooms_ice_failure_message=Connection failed. Your firewall may be blocking calls.
|
||||||
|
rooms_server_unavailable_message=Could not connect to the server.
|
||||||
|
|
||||||
## LOCALIZATION_NOTE(rooms_read_while_wait_offer): This string is followed by a
|
## LOCALIZATION_NOTE(rooms_read_while_wait_offer): This string is followed by a
|
||||||
# tile/offer image and title that are provided by a separate service that has
|
# tile/offer image and title that are provided by a separate service that has
|
||||||
|
@ -120,6 +120,8 @@ describe("loop.store.ActiveRoomStore", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should set the state to `FAILED` on generic error", function() {
|
it("should set the state to `FAILED` on generic error", function() {
|
||||||
|
// errno !== undefined
|
||||||
|
fakeError.errno = 999;
|
||||||
store.roomFailure(new sharedActions.RoomFailure({
|
store.roomFailure(new sharedActions.RoomFailure({
|
||||||
error: fakeError,
|
error: fakeError,
|
||||||
failedJoinRequest: false
|
failedJoinRequest: false
|
||||||
@ -129,6 +131,16 @@ describe("loop.store.ActiveRoomStore", function() {
|
|||||||
expect(store._storeState.failureReason).eql(FAILURE_DETAILS.UNKNOWN);
|
expect(store._storeState.failureReason).eql(FAILURE_DETAILS.UNKNOWN);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should set the state to `COULD_NOT_CONNECT` on undefined errno", function() {
|
||||||
|
store.roomFailure(new sharedActions.RoomFailure({
|
||||||
|
error: fakeError,
|
||||||
|
failedJoinRequest: false
|
||||||
|
}));
|
||||||
|
|
||||||
|
expect(store._storeState.roomState).eql(ROOM_STATES.FAILED);
|
||||||
|
expect(store._storeState.failureReason).eql(FAILURE_DETAILS.COULD_NOT_CONNECT);
|
||||||
|
});
|
||||||
|
|
||||||
it("should set the failureReason to EXPIRED_OR_INVALID on server error: " +
|
it("should set the failureReason to EXPIRED_OR_INVALID on server error: " +
|
||||||
"invalid token", function() {
|
"invalid token", function() {
|
||||||
fakeError.errno = REST_ERRNOS.INVALID_TOKEN;
|
fakeError.errno = REST_ERRNOS.INVALID_TOKEN;
|
||||||
|
@ -107,6 +107,19 @@ describe("loop.StandaloneMozLoop", function() {
|
|||||||
|
|
||||||
return promise;
|
return promise;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should call the callback on xhr error", function() {
|
||||||
|
var promise = loop.request("Rooms:Get", "fakeToken").then(function(result) {
|
||||||
|
expect(result.isError).eql(true);
|
||||||
|
expect(/HTTP 0/.test(result.message)).eql(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Method to mock network failure
|
||||||
|
// https://github.com/sinonjs/sinon/issues/361
|
||||||
|
requests[0].respond(0, {}, "");
|
||||||
|
|
||||||
|
return promise;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("#rooms.join", function() {
|
describe("#rooms.join", function() {
|
||||||
|
@ -346,6 +346,20 @@ describe("loop.standaloneRoomViews", function() {
|
|||||||
.eql("tos_failure_message");
|
.eql("tos_failure_message");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should display cannot connect to server on COULD_NOT_CONNECT", function() {
|
||||||
|
view = mountTestComponent({ failureReason: FAILURE_DETAILS.COULD_NOT_CONNECT });
|
||||||
|
|
||||||
|
expect(view.getDOMNode().querySelector(".failed-room-message").textContent)
|
||||||
|
.eql("rooms_server_unavailable_message");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should display Something went wrong on UNKNOWN error", function() {
|
||||||
|
view = mountTestComponent({ failureReason: FAILURE_DETAILS.UNKNOWN });
|
||||||
|
|
||||||
|
expect(view.getDOMNode().querySelector(".failed-room-message").textContent)
|
||||||
|
.eql("status_error");
|
||||||
|
});
|
||||||
|
|
||||||
it("should not display a retry button when the failure reason is expired or invalid", function() {
|
it("should not display a retry button when the failure reason is expired or invalid", function() {
|
||||||
view = mountTestComponent({ failureReason: FAILURE_DETAILS.EXPIRED_OR_INVALID });
|
view = mountTestComponent({ failureReason: FAILURE_DETAILS.EXPIRED_OR_INVALID });
|
||||||
|
|
||||||
@ -443,6 +457,29 @@ describe("loop.standaloneRoomViews", function() {
|
|||||||
expect(fakeWindow.document.title).to.equal("fakeName — clientShortname2");
|
expect(fakeWindow.document.title).to.equal("fakeName — clientShortname2");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should set document.title to brand name when state is READY and roomName is undefined", function() {
|
||||||
|
activeRoomStore.setStoreState({ roomState: ROOM_STATES.INIT });
|
||||||
|
view = mountTestComponent();
|
||||||
|
activeRoomStore.setStoreState({ roomName: undefined, roomState: ROOM_STATES.READY });
|
||||||
|
|
||||||
|
expect(fakeWindow.document.title).to.equal("clientShortname2");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should set document.title to roomContectUrls[0] and brand name when state is READY and roomContextUrls is present", function() {
|
||||||
|
activeRoomStore.setStoreState({ roomState: ROOM_STATES.INIT });
|
||||||
|
view = mountTestComponent();
|
||||||
|
activeRoomStore.setStoreState({
|
||||||
|
roomName: undefined,
|
||||||
|
roomContextUrls: [{
|
||||||
|
description: "fakeStartPage",
|
||||||
|
location: null
|
||||||
|
}],
|
||||||
|
roomState: ROOM_STATES.READY
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(fakeWindow.document.title).to.equal("fakeStartPage — clientShortname2");
|
||||||
|
});
|
||||||
|
|
||||||
it("should dispatch a `SetupStreamElements` action when the MEDIA_WAIT state " +
|
it("should dispatch a `SetupStreamElements` action when the MEDIA_WAIT state " +
|
||||||
"is entered", function() {
|
"is entered", function() {
|
||||||
activeRoomStore.setStoreState({ roomState: ROOM_STATES.READY });
|
activeRoomStore.setStoreState({ roomState: ROOM_STATES.READY });
|
||||||
|
@ -101,13 +101,14 @@ idea {
|
|||||||
// Object directories take a huge amount of time for IntelliJ to index.
|
// Object directories take a huge amount of time for IntelliJ to index.
|
||||||
// Exclude them. Convention is that object directories start with obj.
|
// Exclude them. Convention is that object directories start with obj.
|
||||||
// IntelliJ is clever and will not exclude the parts of the object
|
// IntelliJ is clever and will not exclude the parts of the object
|
||||||
// directory that are referenced, if there are any.
|
// directory that are referenced, if there are any. In practice,
|
||||||
// In practice, indexing the entirety of the tree is taking too long.
|
// indexing the entirety of the tree is taking too long, so exclude all
|
||||||
|
// but mobile/.
|
||||||
def topsrcdirURI = file(topsrcdir).toURI()
|
def topsrcdirURI = file(topsrcdir).toURI()
|
||||||
excludeDirs += files(file(topsrcdir)
|
excludeDirs += files(file(topsrcdir)
|
||||||
.listFiles({it.isDirectory()} as FileFilter)
|
.listFiles({it.isDirectory()} as FileFilter)
|
||||||
.collect({topsrcdirURI.relativize(it.toURI()).toString()}) // Relative paths.
|
.collect({topsrcdirURI.relativize(it.toURI()).toString()}) // Relative paths.
|
||||||
.findAll({it.startsWith('obj') && !it.startsWith('.') && !it.equals('mobile/')}))
|
.findAll({!it.equals('mobile/')}))
|
||||||
|
|
||||||
// If topobjdir is below topsrcdir, hide only some portions of that tree.
|
// If topobjdir is below topsrcdir, hide only some portions of that tree.
|
||||||
def topobjdirURI = file(topobjdir).toURI()
|
def topobjdirURI = file(topobjdir).toURI()
|
||||||
|
@ -239,8 +239,6 @@ var DebuggerController = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
yield this._settleAllRequests();
|
|
||||||
|
|
||||||
DebuggerView.destroy();
|
DebuggerView.destroy();
|
||||||
this.StackFrames.disconnect();
|
this.StackFrames.disconnect();
|
||||||
this.ThreadState.disconnect();
|
this.ThreadState.disconnect();
|
||||||
@ -253,24 +251,6 @@ var DebuggerController = {
|
|||||||
this._shutdown = true;
|
this._shutdown = true;
|
||||||
}),
|
}),
|
||||||
|
|
||||||
_settleAllRequests: function() {
|
|
||||||
const requests = this.getState().asyncRequests;
|
|
||||||
|
|
||||||
if (requests.length > 0) {
|
|
||||||
const deferred = promise.defer();
|
|
||||||
this.onChange('open-requests', function checkSettled(reqs) {
|
|
||||||
if (reqs.length === 0) {
|
|
||||||
deferred.resolve();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.offChange('open-requests', checkSettled);
|
|
||||||
}.bind(this));
|
|
||||||
return deferred.promise;
|
|
||||||
}
|
|
||||||
|
|
||||||
return promise.resolve();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initiates remote debugging based on the current target, wiring event
|
* Initiates remote debugging based on the current target, wiring event
|
||||||
* handlers as necessary.
|
* handlers as necessary.
|
||||||
|
@ -27,8 +27,7 @@ android {
|
|||||||
manifest.srcFile "${topsrcdir}/mobile/android/base/AndroidManifest.xml"
|
manifest.srcFile "${topsrcdir}/mobile/android/base/AndroidManifest.xml"
|
||||||
|
|
||||||
java {
|
java {
|
||||||
srcDir "${topobjdir}/gradle/base/src"
|
srcDir "${topsrcdir}/mobile/android/base/java"
|
||||||
|
|
||||||
srcDir "${topsrcdir}/mobile/android/search/java"
|
srcDir "${topsrcdir}/mobile/android/search/java"
|
||||||
srcDir "${topsrcdir}/mobile/android/javaaddons/java"
|
srcDir "${topsrcdir}/mobile/android/javaaddons/java"
|
||||||
srcDir "${topsrcdir}/mobile/android/services/src/main/java"
|
srcDir "${topsrcdir}/mobile/android/services/src/main/java"
|
||||||
@ -130,6 +129,5 @@ apply plugin: 'idea'
|
|||||||
|
|
||||||
idea {
|
idea {
|
||||||
module {
|
module {
|
||||||
excludeDirs += file("${topobjdir}/gradle/base/src/org/mozilla/gecko/resources")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user