zoneloaderhelper.js 2.91 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2017 Adobe Systems Incorporated
 * All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */
/* globals Promise */
define('screens/player/runtime/zoneloaderhelper', [
    'jquery',
    'underscore',
    'screens/player/shared/serviceadmin',
    'screens/player/runtime/orchestrator/transition/transition',
    'screens/player/firmware/core/config/config',
    'screens/player/runtime/orchestrator/zoneloader/zoneloader',
    'module'
], function($, _, ServiceAdmin, OrchestratorTransition, Config, Zoneloader, mod) {
    'use strict';

    /**
     * The normal channels zone loader for the orchestrator.
     * @class ZoneLoader
     * @param {Orchestrator} [orchestrator] Orchestrator associated with this zone loader
     * @param {Element} [$frame] The webview/iFrame that is being loaded
     */
    function ZoneLoaderHelper(orchestrator, $frame) {
        this.$frame = $frame;
        this.orchestrator = orchestrator;

        var configSvc = ServiceAdmin.getService(Config.serviceName);
        var display = configSvc.getDisplay();

        var transitionServices = ServiceAdmin.getServices(OrchestratorTransition.serviceName);
        for (var i in transitionServices) {
            if (transitionServices[i].canHandle(display.transition)) {
                this.transition = transitionServices[i];
                break;
            }
        }
    }

    /**
     * @class
     * @constructor
     * @lends Orchestrator.ZoneLoaderHelper.prototype
     *
     * @param {Orchestrator} orchestrator   The orchestrator
     * @param {jQuery}       $frame         The iframe
     */
    ZoneLoaderHelper.prototype = {

        forceIdle: function() {
            var zoneloader = ServiceAdmin.getService(Zoneloader.serviceName);
            zoneloader.forceIdle(this.$frame);
        },

        reload: function() {
            var zoneloader = ServiceAdmin.getService(Zoneloader.serviceName);
            zoneloader.reload(this.$frame);
        },

        hideChannel: function() {
            var zoneloader = ServiceAdmin.getService(Zoneloader.serviceName);
            return zoneloader.hideChannel(this.orchestrator, this.$frame, this.transition);
        },

        showChannel: function(channel) {
            var zoneloader = ServiceAdmin.getService(Zoneloader.serviceName);
            return zoneloader.showChannel(this, channel);
        }

    };

    return ZoneLoaderHelper;
});