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 #31701 from sfoster/task-manager-centering-bug-117…
Browse files Browse the repository at this point in the history
…6895

Bug 1176895 - Always center current app. r=etienne
  • Loading branch information
sfoster committed Sep 8, 2015
2 parents 9eb726e + 04a82c9 commit 70b68a1
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 10 deletions.
7 changes: 6 additions & 1 deletion apps/system/js/task_manager.js
Expand Up @@ -245,9 +245,14 @@
});

this._placeCards(false);
if (this._stackIndex > 0) {

if (this._stackIndex >= 0) {
this._centerCardAtPosition(this._stackIndex);
} else {
// fallback to centering the last in stack
this._centerCardAtPosition(stack.length -1);
}

this.setActive(true);

var screenElement = this.screenElement;
Expand Down
69 changes: 60 additions & 9 deletions apps/system/test/unit/task_manager_test.js
Expand Up @@ -465,6 +465,14 @@ suite('system/TaskManager >', function() {
});

suite('populated task manager >', function() {
function getExpectedCardPlacement(element, position) {
var margins = taskManager.windowWidth - taskManager.cardWidth;
var expectedLeft = margins / 2 +
position * (taskManager.cardWidth +
taskManager.CARD_GUTTER);
return expectedLeft;
}

setup(function() {
MockStackManager.mStack = [];
var app;
Expand Down Expand Up @@ -545,16 +553,11 @@ suite('system/TaskManager >', function() {
margins;
assert.equal(taskManager.cardsList.style.width, expectedWidth +'px');

function checkCardPlacement(element, position) {
var expectedLeft = margins / 2 +
position * (taskManager.cardWidth +
taskManager.CARD_GUTTER);
assert.equal(element.style.left,
expectedLeft+'px');
}

var expectedLeft;
for(var idx=0; idx < taskManager.cardsList.children; idx++) {
checkCardPlacement(cardsList.children[idx], idx);
expectedLeft = getExpectedCardPlacement(cardsList.children[idx], idx);
assert.equal(cardsList.children[idx].style.left,
expectedLeft+'px');
}
});

Expand Down Expand Up @@ -587,6 +590,54 @@ suite('system/TaskManager >', function() {
});
});

suite('center apps', function() {
setup(function() {
MockService.mockQueryWith('getTopMostWindow', apps.search);
MockStackManager.mCurrent = MockStackManager.mStack.length -1;
showTaskManager(this.sinon.clock);
});

test('initial centering', function() {
// test that the current card gets centered
var currentApp = MockStackManager.mStack[MockStackManager.mCurrent];
var elem = taskManager.currentCard.element;

assert.equal(currentApp, taskManager.currentCard.app);

var expectedLeft = getExpectedCardPlacement(
elem, MockStackManager.mCurrent
);
assert.equal(taskManager.currentCard.element.style.left,
expectedLeft+'px');
});

test('centering at different stack position after closing',
function(done) {
// close and re-open the task manager at a different stack position
waitForEvent(window, 'cardviewclosed').then(function() {
// open again at position 0.
MockStackManager.mCurrent = 0;
taskManager.show();

var currentApp = MockStackManager.mStack[0];
var elem = taskManager.currentCard.element;

assert.equal(currentApp, taskManager.currentCard.app);

var expectedLeft = getExpectedCardPlacement(
elem, MockStackManager.mCurrent
);
assert.equal(taskManager.currentCard.element.style.left,
expectedLeft+'px');
}, failOnReject)
.then(function() { done(); }, done);

var targetApp = apps.game;
taskManager.exitToApp(targetApp);
fakeFinish(this.sinon.clock, targetApp);
});
});

suite('when the currently displayed app is out of the stack',
function() {
setup(function() {
Expand Down

0 comments on commit 70b68a1

Please sign in to comment.