15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// require cr.js
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// require cr/event_target.js
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// require cr/util.js
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Bridge between the browser and the page.
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * In this file:
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) *   * define EventTargets to receive message from the browser,
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   * dispatch browser messages to EventTarget,
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   * define interface to request data to the browser.
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('cr.quota', function() {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  'use strict';
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Post requestInfo message to Browser.
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function requestInfo() {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    chrome.send('requestInfo');
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Callback entry point from Browser.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Messages are Dispatched as Event to:
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * onAvailableSpaceUpdated,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * onGlobalInfoUpdated,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * onPerHostInfoUpdated,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * onPerOriginInfoUpdated,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * onStatisticsUpdated.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {string} message Message label. Possible Values are:
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * 'AvailableSpaceUpdated',
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * 'GlobalInfoUpdated',
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * 'PerHostInfoUpdated',
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * 'PerOriginInfoUpdated',
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   *   * 'StatisticsUpdated'.
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @param {Object} detail Message specific additional data.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  function messageHandler(message, detail) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    var target = null;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    switch (message) {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case 'AvailableSpaceUpdated':
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        target = cr.quota.onAvailableSpaceUpdated;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case 'GlobalInfoUpdated':
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        target = cr.quota.onGlobalInfoUpdated;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case 'PerHostInfoUpdated':
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        target = cr.quota.onPerHostInfoUpdated;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case 'PerOriginInfoUpdated':
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        target = cr.quota.onPerOriginInfoUpdated;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case 'StatisticsUpdated':
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        target = cr.quota.onStatisticsUpdated;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      default:
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        console.error('Unknown Message');
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        break;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (target) {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      var event = cr.doc.createEvent('CustomEvent');
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      event.initCustomEvent('update', false, false, detail);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      target.dispatchEvent(event);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onAvailableSpaceUpdated: new cr.EventTarget(),
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onGlobalInfoUpdated: new cr.EventTarget(),
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onPerHostInfoUpdated: new cr.EventTarget(),
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onPerOriginInfoUpdated: new cr.EventTarget(),
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    onStatisticsUpdated: new cr.EventTarget(),
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    requestInfo: requestInfo,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    messageHandler: messageHandler
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
83