Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
209
gaia/apps/system/test/unit/callscreen_window_test.js
Executable file
209
gaia/apps/system/test/unit/callscreen_window_test.js
Executable file
|
|
@ -0,0 +1,209 @@
|
|||
/* globals CallscreenWindow, MocksHelper, MockApplications, MockLayoutManager,
|
||||
Service, MockL10n */
|
||||
'use strict';
|
||||
|
||||
requireApp('system/test/unit/mock_orientation_manager.js');
|
||||
requireApp('system/test/unit/mock_layout_manager.js');
|
||||
requireApp('system/shared/test/unit/mocks/mock_manifest_helper.js');
|
||||
requireApp('system/shared/test/unit/mocks/mock_settings_listener.js');
|
||||
requireApp('system/test/unit/mock_applications.js');
|
||||
requireApp('system/test/unit/mock_screen_layout.js');
|
||||
requireApp('system/test/unit/mock_app_chrome.js');
|
||||
require('/shared/test/unit/mocks/mock_l10n.js');
|
||||
require('/shared/test/unit/mocks/mock_service.js');
|
||||
|
||||
var mocksForCallscreenWindow = new MocksHelper([
|
||||
'OrientationManager', 'Applications', 'SettingsListener',
|
||||
'ManifestHelper', 'LayoutManager', 'ScreenLayout', 'Service',
|
||||
'AppChrome'
|
||||
]).init();
|
||||
|
||||
suite('system/CallscreenWindow', function() {
|
||||
mocksForCallscreenWindow.attachTestHelpers();
|
||||
var stubById;
|
||||
var realApplications;
|
||||
var realLayoutManager;
|
||||
var realL10n;
|
||||
var CSORIGIN = window.location.origin.replace('system', 'callscreen') + '/';
|
||||
var fakeAppConfig = {
|
||||
iframe: document.createElement('iframe'),
|
||||
frame: document.createElement('div'),
|
||||
origin: 'http://fake',
|
||||
url: 'http://fakeurl/index.html',
|
||||
manifestURL: 'app://fakeatt.gaiamobile.org/manifest.webapp',
|
||||
name: 'fake',
|
||||
manifest: {
|
||||
orientation: 'default',
|
||||
icons: {
|
||||
'128': 'fake.icon'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
fakeAppConfig.browser = { element: fakeAppConfig.iframe };
|
||||
|
||||
setup(function(done) {
|
||||
MockApplications.mRegisterMockApp(fakeAppConfig);
|
||||
realApplications = window.applications;
|
||||
window.applications = MockApplications;
|
||||
realLayoutManager = window.layoutManager;
|
||||
window.layoutManager = new MockLayoutManager();
|
||||
realL10n = navigator.mozL10n;
|
||||
navigator.mozL10n = MockL10n;
|
||||
this.sinon.useFakeTimers();
|
||||
stubById = this.sinon.stub(document, 'getElementById');
|
||||
stubById.returns(document.createElement('div'));
|
||||
this.sinon.stub(HTMLElement.prototype, 'querySelector',
|
||||
function() {
|
||||
return document.createElement('div');
|
||||
});
|
||||
requireApp('system/js/browser_config_helper.js');
|
||||
requireApp('system/js/browser_frame.js');
|
||||
requireApp('system/js/app_window.js');
|
||||
requireApp('system/js/browser_mixin.js');
|
||||
requireApp('system/js/attention_window.js');
|
||||
requireApp('system/js/callscreen_window.js', done);
|
||||
});
|
||||
|
||||
teardown(function() {
|
||||
navigator.mozL10n = realL10n;
|
||||
window.applications = realApplications;
|
||||
window.layoutManager = realLayoutManager;
|
||||
stubById.restore();
|
||||
});
|
||||
|
||||
test('Should be an attention window', function() {
|
||||
var callscreen = new CallscreenWindow();
|
||||
assert.isTrue(callscreen.isAttentionWindow);
|
||||
});
|
||||
|
||||
test('Hide right away if we are not active while window.close()', function() {
|
||||
var callscreen = new CallscreenWindow();
|
||||
this.sinon.stub(callscreen, 'isActive').returns(false);
|
||||
callscreen.element.dispatchEvent(new CustomEvent('mozbrowserclose'));
|
||||
|
||||
assert.isTrue(callscreen.isHidden());
|
||||
});
|
||||
|
||||
test('Close while window.close() then hide', function() {
|
||||
var callscreen = new CallscreenWindow();
|
||||
this.sinon.spy(callscreen, 'requestClose');
|
||||
var stubPublish = this.sinon.stub(callscreen, 'publish');
|
||||
this.sinon.stub(callscreen, 'isActive').returns(true);
|
||||
var stubBlur = this.sinon.stub(callscreen.browser.element, 'blur');
|
||||
var stubReloadWindow = this.sinon.stub(callscreen, 'reloadWindow');
|
||||
callscreen.element.dispatchEvent(new CustomEvent('mozbrowserclose'));
|
||||
sinon.assert.calledOnce(callscreen.requestClose);
|
||||
assert.isTrue(stubPublish.calledWith('terminated'));
|
||||
assert.isFalse(stubReloadWindow.called);
|
||||
callscreen.element.dispatchEvent(new CustomEvent('_closed'));
|
||||
assert.isTrue(callscreen.isHidden());
|
||||
assert.isTrue(stubReloadWindow.called);
|
||||
if (document.activeElement === callscreen.browser.element) {
|
||||
assert.isTrue(stubBlur.called);
|
||||
}
|
||||
});
|
||||
|
||||
test('When window.close() and requestOpen are racing', function() {
|
||||
var callscreen = new CallscreenWindow();
|
||||
var stubPublish = this.sinon.stub(callscreen, 'publish');
|
||||
this.sinon.spy(callscreen, 'requestClose');
|
||||
this.sinon.stub(callscreen, 'isActive').returns(false);
|
||||
var stubBlur = this.sinon.stub(callscreen.browser.element, 'blur');
|
||||
var stubReloadWindow = this.sinon.stub(callscreen, 'reloadWindow');
|
||||
|
||||
callscreen.requestOpen();
|
||||
callscreen.element.dispatchEvent(new CustomEvent('mozbrowserclose'));
|
||||
|
||||
sinon.assert.calledOnce(callscreen.requestClose);
|
||||
assert.isTrue(stubPublish.calledWith('terminated'));
|
||||
assert.isFalse(stubReloadWindow.called);
|
||||
callscreen.element.dispatchEvent(new CustomEvent('_closed'));
|
||||
assert.isTrue(callscreen.isHidden());
|
||||
assert.isTrue(stubReloadWindow.called);
|
||||
if (document.activeElement === callscreen.browser.element) {
|
||||
assert.isTrue(stubBlur.called);
|
||||
}
|
||||
});
|
||||
|
||||
test('Hide and reload right away while window.close() when we are not active',
|
||||
function() {
|
||||
var callscreen = new CallscreenWindow();
|
||||
this.sinon.stub(callscreen, 'isActive').returns(false);
|
||||
var stubBlur = this.sinon.stub(callscreen.browser.element, 'blur');
|
||||
var stubReloadWindow = this.sinon.stub(callscreen, 'reloadWindow');
|
||||
callscreen.element.dispatchEvent(new CustomEvent('mozbrowserclose'));
|
||||
assert.isTrue(callscreen.isHidden());
|
||||
assert.isTrue(stubReloadWindow.called);
|
||||
if (document.activeElement === callscreen.browser.element) {
|
||||
assert.isTrue(stubBlur.called);
|
||||
}
|
||||
});
|
||||
|
||||
suite('> Call screen ensure', function() {
|
||||
suite('> When the lockscreen is unlocked', function() {
|
||||
test('it should open the call screen and force a hashchange',
|
||||
function() {
|
||||
var callscreen = new CallscreenWindow();
|
||||
this.sinon.stub(callscreen, 'show');
|
||||
callscreen.ensure();
|
||||
assert.equal(CSORIGIN + 'index.html#×tamp=0',
|
||||
callscreen.browser.element.src);
|
||||
assert.isTrue(callscreen.show.calledOnce,
|
||||
'AttentionWindow#show called.');
|
||||
});
|
||||
});
|
||||
|
||||
suite('> When the lockscreen is locked', function() {
|
||||
setup(function() {
|
||||
Service.mockQueryWith('locked', true);
|
||||
});
|
||||
|
||||
teardown(function() {
|
||||
Service.mockQueryWith('locked', false);
|
||||
});
|
||||
|
||||
test('it should open the call screen on #locked', function() {
|
||||
var callscreen = new CallscreenWindow();
|
||||
this.sinon.stub(callscreen, 'show');
|
||||
callscreen.ensure();
|
||||
assert.equal(CSORIGIN + 'index.html#locked×tamp=0',
|
||||
callscreen.browser.element.src);
|
||||
assert.isTrue(callscreen.show.calledOnce,
|
||||
'AttentionWindow#show called.');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
suite('reloading the window', function() {
|
||||
var subject;
|
||||
setup(function() {
|
||||
subject = new CallscreenWindow();
|
||||
subject.browser.element = {
|
||||
src: 'app://callscreen.gaiamobile.org/index.html#stuff',
|
||||
setAttribute: function() {},
|
||||
classList: {
|
||||
contains: function() { return true; }
|
||||
}
|
||||
};
|
||||
this.sinon.spy(subject, 'setVisible');
|
||||
|
||||
subject.reloadWindow();
|
||||
});
|
||||
|
||||
test('should empty the src at first', function() {
|
||||
assert.equal(subject.browser.element.src, '');
|
||||
});
|
||||
|
||||
test('should set the visibility to false', function() {
|
||||
sinon.assert.calledOnce(subject.setVisible);
|
||||
sinon.assert.calledWith(subject.setVisible, false);
|
||||
});
|
||||
|
||||
test('should reset the src after a tick', function() {
|
||||
this.sinon.clock.tick();
|
||||
assert.equal(subject.browser.element.src,
|
||||
'app://callscreen.gaiamobile.org/index.html');
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue