/**
 * Fires once the content script worker is initialized.
 *
 * @event worker:initialized
 * @param {Object} initialState The initial state of the settings module.
 */
self.port.once('worker:initialized', function (initialState) {

    applyL10n(initialState.l10n);
});

self.port.on('preference:fetched', function () {

    // TODO Re-render the user interface.
});

/**
 * Applies a given localization to marked document elements.
 * https://bugzilla.mozilla.org/show_bug.cgi?id=787351
 *
 * @private
 * @param {Object} l10n A localization object.
 */
function applyL10n (l10n) {

    var l10nKeys = Object.keys(l10n);

    l10nKeys.forEach(function (l10nKey) {

        var elements = document.querySelectorAll('[data-l10n-id="' + l10nKey + '"]');

        for (let element of elements) {
            element.textContent = l10n[l10nKey];
        }
    });
}

function fetchPreference (preferenceKey) {
    self.port.emit('preference:fetch', preferenceKey);
}

/**
 * Emitters
 */

self.port.emit('preference:changed', {
    key: 'sliderPosition',
    value: 2
});