Home | History | Annotate | Download | only in options
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 /**
      6  * @typedef {{
      7  *     default_handler: number,
      8  *     handlers: Array,
      9  *     has_policy_recommendations: boolean,
     10  *     is_default_handler_set_by_user: boolean,
     11  *     protocol: string
     12  * }}
     13  * @see chrome/browser/ui/webui/options/handler_options_handler.cc
     14  */
     15 var Handlers;
     16 
     17 cr.define('options', function() {
     18   /** @const */ var Page = cr.ui.pageManager.Page;
     19   /** @const */ var PageManager = cr.ui.pageManager.PageManager;
     20 
     21   /////////////////////////////////////////////////////////////////////////////
     22   // HandlerOptions class:
     23 
     24   /**
     25    * Encapsulated handling of handler options page.
     26    * @constructor
     27    * @extends {cr.ui.pageManager.Page}
     28    */
     29   function HandlerOptions() {
     30     this.activeNavTab = null;
     31     Page.call(this,
     32               'handlers',
     33               loadTimeData.getString('handlersPageTabTitle'),
     34               'handler-options');
     35   }
     36 
     37   cr.addSingletonGetter(HandlerOptions);
     38 
     39   HandlerOptions.prototype = {
     40     __proto__: Page.prototype,
     41 
     42     /**
     43      * The handlers list.
     44      * @type {options.HandlersList}
     45      * @private
     46      */
     47     handlersList_: null,
     48 
     49     /** @override */
     50     initializePage: function() {
     51       Page.prototype.initializePage.call(this);
     52 
     53       this.createHandlersList_();
     54 
     55       $('handler-options-overlay-confirm').onclick =
     56           PageManager.closeOverlay.bind(PageManager);
     57     },
     58 
     59     /**
     60      * Creates, decorates and initializes the handlers list.
     61      * @private
     62      */
     63     createHandlersList_: function() {
     64       var handlersList = $('handlers-list');
     65       options.HandlersList.decorate(handlersList);
     66       this.handlersList_ = assertInstanceof(handlersList, options.HandlersList);
     67       this.handlersList_.autoExpands = true;
     68 
     69       var ignoredHandlersList = $('ignored-handlers-list');
     70       options.IgnoredHandlersList.decorate(ignoredHandlersList);
     71       this.ignoredHandlersList_ = assertInstanceof(ignoredHandlersList,
     72           options.IgnoredHandlersList);
     73       this.ignoredHandlersList_.autoExpands = true;
     74     },
     75   };
     76 
     77   /**
     78    * Sets the list of handlers shown by the view.
     79    * @param {Array.<Handlers>} handlers Handlers to be shown in the view.
     80    */
     81   HandlerOptions.setHandlers = function(handlers) {
     82     $('handlers-list').setHandlers(handlers);
     83   };
     84 
     85   /**
     86    * Sets the list of ignored handlers shown by the view.
     87    * @param {Array} handlers Handlers to be shown in the view.
     88    */
     89   HandlerOptions.setIgnoredHandlers = function(handlers) {
     90     $('ignored-handlers-section').hidden = handlers.length == 0;
     91     $('ignored-handlers-list').setHandlers(handlers);
     92   };
     93 
     94   return {
     95     HandlerOptions: HandlerOptions
     96   };
     97 });
     98