// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // require cr.js // require cr/event_target.js // require cr/util.js /** * Bridge between the browser and the page. * In this file: * * define EventTargets to receive message from the browser, * * dispatch browser messages to EventTarget, * * define interface to request data to the browser. */ cr.define('cr.quota', function() { 'use strict'; /** * Post requestInfo message to Browser. */ function requestInfo() { chrome.send('requestInfo'); } /** * Callback entry point from Browser. * Messages are Dispatched as Event to: * * onAvailableSpaceUpdated, * * onGlobalInfoUpdated, * * onPerHostInfoUpdated, * * onPerOriginInfoUpdated, * * onStatisticsUpdated. * @param {string} message Message label. Possible Values are: * * 'AvailableSpaceUpdated', * * 'GlobalInfoUpdated', * * 'PerHostInfoUpdated', * * 'PerOriginInfoUpdated', * * 'StatisticsUpdated'. * @param {Object} detail Message specific additional data. */ function messageHandler(message, detail) { var target = null; switch (message) { case 'AvailableSpaceUpdated': target = cr.quota.onAvailableSpaceUpdated; break; case 'GlobalInfoUpdated': target = cr.quota.onGlobalInfoUpdated; break; case 'PerHostInfoUpdated': target = cr.quota.onPerHostInfoUpdated; break; case 'PerOriginInfoUpdated': target = cr.quota.onPerOriginInfoUpdated; break; case 'StatisticsUpdated': target = cr.quota.onStatisticsUpdated; break; default: console.error('Unknown Message'); break; } if (target) { var event = cr.doc.createEvent('CustomEvent'); event.initCustomEvent('update', false, false, detail); target.dispatchEvent(event); } } return { onAvailableSpaceUpdated: new cr.EventTarget(), onGlobalInfoUpdated: new cr.EventTarget(), onPerHostInfoUpdated: new cr.EventTarget(), onPerOriginInfoUpdated: new cr.EventTarget(), onStatisticsUpdated: new cr.EventTarget(), requestInfo: requestInfo, messageHandler: messageHandler }; });