resolver-normal.js 2.78 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2015 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 */
require([
    'jquery',
    'screens/player/runtime/orchestrator',
    'screens/player/shared/serviceadmin',
    'screens/player/firmware/preferences/preferences',
    'screens/player/store/store'
], function($, Orchestrator, ServiceAdmin, Preferences, Store) {
    'use strict';

    /**
     * Default options for the component.
     *
     * @typedef {Object} NormalResolver.NormalResolverOptions
     * @type {Object}
     * @property {String} serverPath The root path to the server.
     */
    var DEFAULTS = {
        serverPath: window.location.origin
    };

    /**
     * The normal channels resolver for the orchestrator.
     *
     * @class NormalResolver
     *
     * @param {NormalResolver.NormalResolverOptions} [options] The options for the resolver
     */
    var NormalResolver = function(options) {
        this.options = $.extend({}, DEFAULTS, options);
    };

    /**
     * Prepare the channel before using it.
     * @memberof NormalResolver
     *
     * @param  {Object} channel The channel to be prepared
     *
     * @return {Promise} A promise that does the preparation for the specified channel
     */
    NormalResolver.prototype.prepare = function(channel) { // jshint unused:false
        return Promise.resolve();
    };

    /**
     * Show the iframe for the specified channel.
     * @memberof NormalResolver
     *
     * @param  {Object} channel The channel to be shown
     *
     * @return {Promise} A promise that resolves the path to the specified channel
     */
    NormalResolver.prototype.resolve = function(channel) {
        var channelPath = channel.path;
        var store = ServiceAdmin.getService(Store.serviceName);
        var state = store.getState();
        var serverPath = state[Preferences.NAMESPACE].server || this.options.serverPath;
        return Promise.resolve(serverPath + channelPath + '.html?wcmmode=disabled&displayPath=' + this.options.displayPath);
    };

    /**
     * Destroy the resolver.
     * @memberof NormalResolver
     */
    NormalResolver.prototype.destroy = function() {
        delete this.options;
    };

    Orchestrator.resolvers.Normal = NormalResolver;

});