Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Merge pull request #25299 from julienw/1076703-v2.0-fix-dsds-switch
Browse files Browse the repository at this point in the history
Bug 1076703 - In DSDS mode, switching SIM does not work in the new messa...
  • Loading branch information
seinlin committed Oct 20, 2014
2 parents 07c4e20 + ba97754 commit f93f620
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 14 deletions.
9 changes: 7 additions & 2 deletions apps/sms/js/thread_ui.js
Expand Up @@ -2387,8 +2387,13 @@ var ThreadUI = global.ThreadUI = {
{
confirmHandler: function() {
// Update messageDOM state to 'sending' while sim switching
messageDOM.classList.remove('error');
messageDOM.classList.add('sending');
// Getting it again because it might be displayed now.
// if we're in the new message panel, messageDOM is not displayed
var messageDOM = document.getElementById('message-' + message.id);
if (messageDOM) {
messageDOM.classList.remove('error');
messageDOM.classList.add('sending');
}

Settings.switchMmsSimHandler(serviceId).then(
this.resendMessage.bind(this, message.id))
Expand Down
62 changes: 50 additions & 12 deletions apps/sms/test/unit/thread_ui_test.js
Expand Up @@ -2126,7 +2126,7 @@ suite('thread_ui.js >', function() {

suite('message status update handlers >', function() {
teardown(function() {
document.body.removeChild(this.container);
this.container.remove();
});
setup(function() {
this.fakeMessage = {
Expand Down Expand Up @@ -2168,6 +2168,7 @@ suite('thread_ui.js >', function() {
assert.isTrue(this.container.classList.contains('error'));
});
});

suite('messages that were previously in the "error" state >',
function() {
setup(function() {
Expand All @@ -2179,28 +2180,65 @@ suite('thread_ui.js >', function() {
assert.isTrue(this.container.classList.contains('sending'));
});
});
suite('Show error dialog while sending failed',
function() {

suite('Show error dialog while sending failed', function() {
setup(function() {
this.sinon.spy(ThreadUI, 'showMessageError');
this.sinon.stub(Settings, 'switchMmsSimHandler')
.returns(Promise.resolve());
});

test('does not show dialog if error is not NonActiveSimCardError',
function() {
ThreadUI.onMessageFailed(this.fakeMessage);
sinon.assert.notCalled(ThreadUI.showMessageError);
});
test('Show dialog if error is NonActiveSimCardError',

suite('Show dialog if error is NonActiveSimCardError,', function() {
setup(function() {
ThreadUI.showErrorInFailedEvent = 'NonActiveSimCardError';
});


test('When the message is displayed', function() {
ThreadUI.onMessageFailed(this.fakeMessage);

sinon.assert.called(ThreadUI.showMessageError);
assert.equal(ThreadUI.showErrorInFailedEvent, '');
MockErrorDialog.calls[0][1].confirmHandler();
assert.isTrue(this.container.classList.contains('sending'));
assert.isFalse(this.container.classList.contains('error'));
sinon.assert.called(Settings.switchMmsSimHandler);
});

test('When the message is not displayed', function() {
this.container.remove();

ThreadUI.onMessageFailed(this.fakeMessage);

sinon.assert.called(ThreadUI.showMessageError);
assert.equal(ThreadUI.showErrorInFailedEvent, '');
MockErrorDialog.calls[0][1].confirmHandler();
sinon.assert.called(Settings.switchMmsSimHandler);
});

test('When the message is displayed while the dialog is displayed',
function() {
ThreadUI.showErrorInFailedEvent = 'NonActiveSimCardError';
ThreadUI.onMessageFailed(this.fakeMessage);
sinon.assert.called(ThreadUI.showMessageError);
assert.equal(ThreadUI.showErrorInFailedEvent, '');
MockErrorDialog.calls[0][1].confirmHandler();
assert.isTrue(this.container.classList.contains('sending'));
assert.isFalse(this.container.classList.contains('error'));
sinon.assert.called(Settings.switchMmsSimHandler);
this.container.remove();

ThreadUI.onMessageFailed(this.fakeMessage);

sinon.assert.called(ThreadUI.showMessageError);
assert.equal(ThreadUI.showErrorInFailedEvent, '');

this.container.className = 'error';
document.body.appendChild(this.container);
MockErrorDialog.calls[0][1].confirmHandler();

sinon.assert.called(Settings.switchMmsSimHandler);
assert.isTrue(this.container.classList.contains('sending'));
assert.isFalse(this.container.classList.contains('error'));
});
});
});
});
Expand Down

0 comments on commit f93f620

Please sign in to comment.