Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
134 lines
3.5 KiB
JavaScript
Executable file
134 lines
3.5 KiB
JavaScript
Executable file
'use strict';
|
|
/* global HomeGesture */
|
|
/* global MocksHelper */
|
|
/* global MockNavigatorSettings */
|
|
/* global MockScreenLayout */
|
|
/* global ScreenLayout */
|
|
|
|
requireApp('system/shared/test/unit/mocks/mock_settings_listener.js');
|
|
requireApp('system/shared/test/unit/mocks/mock_navigator_moz_settings.js');
|
|
requireApp('system/test/unit/mock_screen_layout.js');
|
|
|
|
requireApp('system/js/home_gesture.js');
|
|
|
|
var mocksForHomegesture = new MocksHelper([
|
|
'SettingsListener',
|
|
'ScreenLayout'
|
|
]).init();
|
|
|
|
suite('enable/disable homegesture', function() {
|
|
var realScreenLayout;
|
|
var realSettings;
|
|
var fakeHomebar;
|
|
var subject;
|
|
mocksForHomegesture.attachTestHelpers();
|
|
|
|
suiteSetup(function() {
|
|
realSettings = navigator.mozSettings;
|
|
navigator.mozSettings = MockNavigatorSettings;
|
|
realScreenLayout = window.ScreenLayout;
|
|
window.ScreenLayout = MockScreenLayout;
|
|
});
|
|
|
|
suiteTeardown(function() {
|
|
window.ScreenLayout = realScreenLayout;
|
|
navigator.mozSettings = realSettings;
|
|
});
|
|
|
|
setup(function() {
|
|
MockNavigatorSettings.mSetup();
|
|
MockNavigatorSettings.mSet({
|
|
'homegesture.enabled': false,
|
|
'software-button.enabled': false
|
|
});
|
|
MockNavigatorSettings.mSyncRepliesOnly = true;
|
|
fakeHomebar = document.createElement('div');
|
|
fakeHomebar.id = 'bottom-panel';
|
|
document.body.appendChild(fakeHomebar);
|
|
ScreenLayout.setDefault({
|
|
hardwareHomeButton: false
|
|
});
|
|
});
|
|
|
|
teardown(function() {
|
|
fakeHomebar.parentNode.removeChild(fakeHomebar);
|
|
window.ScreenLayout.mTeardown();
|
|
});
|
|
|
|
test('initial gesture without hardware homebtn on phone', function() {
|
|
ScreenLayout.setDefault({
|
|
tiny: true
|
|
});
|
|
subject = new HomeGesture();
|
|
subject.start();
|
|
assert.equal(
|
|
MockNavigatorSettings.mSettings['homegesture.enabled'], false);
|
|
});
|
|
|
|
test('initial gesture without hardware homebtn on tablet', function() {
|
|
ScreenLayout.setDefault({
|
|
tiny: false
|
|
});
|
|
subject = new HomeGesture();
|
|
subject.start();
|
|
assert.equal(
|
|
subject.homeBar.classList.contains('visible'),
|
|
true);
|
|
});
|
|
|
|
test('enable software button when homegesture is enabled', function() {
|
|
subject.enabled = true;
|
|
subject.handleEvent({
|
|
type: 'software-button-enabled'
|
|
});
|
|
assert.equal(
|
|
MockNavigatorSettings.mSettings['homegesture.enabled'], false);
|
|
});
|
|
|
|
test('disable sw btn when homegesture is disabled without hardware homebtn',
|
|
function() {
|
|
subject.enabled = false;
|
|
subject.hasHardwareHomeButton = false;
|
|
subject.handleEvent({
|
|
type: 'software-button-disabled'
|
|
});
|
|
assert.equal(
|
|
MockNavigatorSettings.mSettings['homegesture.enabled'], true);
|
|
});
|
|
|
|
test('when utility tray display', function() {
|
|
subject.handleEvent({
|
|
type: 'utilitytrayshow'
|
|
});
|
|
assert.equal(
|
|
subject.homeBar.classList.contains('visible'),
|
|
false);
|
|
});
|
|
|
|
test('when utility tray hide', function() {
|
|
subject.handleEvent({
|
|
type: 'utilitytrayhide'
|
|
});
|
|
assert.equal(
|
|
subject.homeBar.classList.contains('visible'),
|
|
true);
|
|
});
|
|
|
|
test('when lockscreen is enabled', function() {
|
|
subject.handleEvent({
|
|
type: 'lockscreen-appopened'
|
|
});
|
|
assert.equal(
|
|
subject.homeBar.classList.contains('visible'),
|
|
false);
|
|
});
|
|
|
|
test('when lockscreen is disabled', function() {
|
|
subject.handleEvent({
|
|
type: 'lockscreen-appclose'
|
|
});
|
|
assert.equal(
|
|
subject.homeBar.classList.contains('visible'),
|
|
true);
|
|
});
|
|
});
|