Source: js/homescreen_window_manager.js

/* global BaseModule */

'use strict';
(function(exports) {
  /**
   * HomescreenWindowManager manages the show/hide of HomescreenWindow and
   * HomescreenLauncher instances.
   *
   * @class HomescreenWindowManager
   * @requires BaseModule
   */
  function HomescreenWindowManager() {}
  HomescreenWindowManager.EVENTS = [
    'appswitching',
    'open-app',
    'webapps-launch'
  ];
  HomescreenWindowManager.SUB_MODULES = [
    'HomescreenLauncher'
  ];
  HomescreenWindowManager.STATES = [
    'getHomescreen'
  ];

  BaseModule.create(HomescreenWindowManager, {
    DEBUG: false,
    name: 'HomescreenWindowManager',

    _handle_appswitching: function() {
      this.getHomescreen().fadeOut();
    },

    '_handle_open-app': function(evt) {
      this._handle_launch_homescreen(evt);
    },
    '_handle_webapps-launch': function(evt) {
      this._handle_launch_homescreen(evt);
    },
    _handle_launch_homescreen: function(evt) {
      var detail = evt.detail;
      if (this.homescreenLauncher &&
          detail.manifestURL === this.homescreenLauncher.manifestURL) {
        this.getHomescreen();
        evt.stopImmediatePropagation();
      }
    },

    /**
     * getHomescreen returns the homescreen app window based on if it is
     * triggered by home event.
     *
     * @memberOf HomescreenWindowManager.prototype
     */
    getHomescreen: function getHomescreen(isHomeEvent) {
      if (!this.homescreenLauncher) {
        return null;
      }
      var home  = this.homescreenLauncher.getHomescreen(true);
      if (isHomeEvent) {
        home.ensure(true);
      }
      return home;
    }
  });
}());