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:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,194 @@
/* globals TrackingNotice, MocksHelper, MockNavigatorSettings */
'use strict';
requireApp('system/js/service.js');
requireApp('system/js/base_ui.js');
requireApp('system/js/system_dialog.js');
requireApp('system/js/tracking_notice.js');
require('/shared/test/unit/mocks/mock_lazy_loader.js');
require('/shared/js/component_utils.js');
require('/shared/elements/gaia_switch/script.js');
require('/shared/test/unit/mocks/mock_navigator_moz_settings.js');
var mocksForTrackingNotice = new MocksHelper([
'LazyLoader'
]).init();
const TRACKING_ENABLED = 'privacy.trackingprotection.enabled';
const TRACKING_SHOWN = 'privacy.trackingprotection.shown';
suite('Tracking notice', function() {
var subject, container, realMozSettings;
mocksForTrackingNotice.attachTestHelpers();
suiteSetup(function() {
realMozSettings = navigator.mozSettings;
navigator.mozSettings = MockNavigatorSettings;
});
suiteTeardown(function() {
navigator.mozSettings = realMozSettings;
});
setup(function() {
MockNavigatorSettings.mSetup();
MockNavigatorSettings.mSyncRepliesOnly = true;
container = document.createElement('div');
document.body.appendChild(container);
TrackingNotice.prototype.containerElement = container;
});
teardown(function() {
document.body.removeChild(container);
subject && subject.destroy();
});
suite('initialization', function() {
setup(function() {
this.sinon.spy(TrackingNotice.prototype, 'render');
this.sinon.stub(TrackingNotice.prototype, 'publish');
});
test('it renders the dialog if not shown', function() {
subject = new TrackingNotice();
assert.isTrue(subject.render.called);
});
test('it listens on appopened event', function() {
var listenerStub = this.sinon.stub(window, 'addEventListener');
subject = new TrackingNotice();
assert.isTrue(listenerStub.calledWith('appopened'));
});
});
suite('show', function() {
setup(function() {
subject = new TrackingNotice();
this.sinon.stub(subject, 'publish');
});
test('shows the dialog', function() {
subject.show();
assert.isFalse(subject.element.classList.contains('hidden'));
assert.isTrue(subject.publish.calledWith('show'));
});
test('updates the switch to match the current settings value', function() {
assert.isFalse(subject.setting.checked);
MockNavigatorSettings.mSet({
[TRACKING_ENABLED]: true
});
subject.show();
MockNavigatorSettings.mReplyToRequests();
assert.isTrue(subject.setting.checked);
});
});
suite('hide', function() {
setup(function() {
subject = new TrackingNotice();
this.sinon.stub(subject, 'publish');
});
test('hides the dialog', function() {
subject.hide();
assert.isTrue(subject.element.classList.contains('hidden'));
assert.isTrue(subject.publish.calledWith('hide'));
});
});
suite('confirmNotice', function() {
setup(function() {
subject = new TrackingNotice();
this.sinon.stub(subject, 'destroy');
});
test('saves the flag for not showing again', function() {
subject.confirmNotice();
assert.isTrue(MockNavigatorSettings.mSettings[TRACKING_SHOWN]);
});
test('hides the dialog', function() {
subject.show();
subject.confirmNotice();
assert.isTrue(subject.destroy.called);
});
});
suite('onAppopened', function() {
var fakeEvent;
setup(function() {
subject = new TrackingNotice();
this.sinon.stub(subject, 'show');
fakeEvent = {
detail: {
isBrowser: function() {},
isSearch: function() {},
element: document.createElement('div')
}
};
});
test('does nothing if is not a search or the browser app', function() {
this.sinon.stub(fakeEvent.detail, 'isBrowser').returns(false);
this.sinon.stub(fakeEvent.detail, 'isSearch').returns(false);
window.dispatchEvent(new CustomEvent('appopened', fakeEvent));
assert.isFalse(subject.show.called);
});
test('opens the dialog if Browser app', function() {
this.sinon.stub(fakeEvent.detail, 'isBrowser').returns(true);
this.sinon.stub(fakeEvent.detail, 'isSearch').returns(false);
window.dispatchEvent(new CustomEvent('appopened', fakeEvent));
assert.isTrue(subject.show.called);
});
test('opens the dialog if search app', function() {
this.sinon.stub(fakeEvent.detail, 'isBrowser').returns(false);
this.sinon.stub(fakeEvent.detail, 'isSearch').returns(true);
window.dispatchEvent(new CustomEvent('appopened', fakeEvent));
assert.isTrue(subject.show.called);
});
});
suite('onAppclosed', function() {
var fakeEvent;
setup(function() {
subject = new TrackingNotice();
this.sinon.stub(subject, 'hide');
fakeEvent = {
detail: {
isBrowser: function() {},
isSearch: function() {},
element: document.createElement('div')
}
};
});
test('does nothing if is not a search or the browser app', function() {
this.sinon.stub(fakeEvent.detail, 'isBrowser').returns(false);
this.sinon.stub(fakeEvent.detail, 'isSearch').returns(false);
window.dispatchEvent(new CustomEvent('appclosed', fakeEvent));
assert.isFalse(subject.hide.called);
});
test('hides the dialog if Browser app', function() {
this.sinon.stub(fakeEvent.detail, 'isBrowser').returns(true);
this.sinon.stub(fakeEvent.detail, 'isSearch').returns(false);
window.dispatchEvent(new CustomEvent('appclosed', fakeEvent));
assert.isTrue(subject.hide.called);
});
test('hides the dialog if search app', function() {
this.sinon.stub(fakeEvent.detail, 'isBrowser').returns(false);
this.sinon.stub(fakeEvent.detail, 'isSearch').returns(true);
window.dispatchEvent(new CustomEvent('appclosed', fakeEvent));
assert.isTrue(subject.hide.called);
});
});
});