| Index: content/browser/resources/media/new/main.js
|
| diff --git a/content/browser/resources/media/new/main.js b/content/browser/resources/media/new/main.js
|
| index 85cdd3aba1fe5442dd2983dd79dde34d466814d3..dd9d013ec22ae7f58c49848ef8bca5c25f69c258 100644
|
| --- a/content/browser/resources/media/new/main.js
|
| +++ b/content/browser/resources/media/new/main.js
|
| @@ -10,6 +10,28 @@ var media = (function() {
|
|
|
| var manager_ = null;
|
|
|
| + // A number->string mapping that is populated through the backend that
|
| + // describes the phase that the network entity is in.
|
| + var eventPhases_ = {};
|
| +
|
| + // A number->string mapping that is populated through the backend that
|
| + // describes the type of event sent from the network.
|
| + var eventTypes_ = {};
|
| +
|
| + // A mapping of number->CacheEntry where the number is a unique id for that
|
| + // network request.
|
| + var cacheEntries_ = {};
|
| +
|
| + // A mapping of url->CacheEntity where the url is the url of the resource.
|
| + var cacheEntriesByKey_ = {};
|
| +
|
| + var requestURLs_ = {};
|
| +
|
| + var media = {
|
| + BAR_WIDTH: 200,
|
| + BAR_HEIGHT: 25
|
| + };
|
| +
|
| /**
|
| * Users of |media| must call initialize prior to calling other methods.
|
| */
|
| @@ -23,8 +45,74 @@ var media = (function() {
|
| }
|
| };
|
|
|
| - media.onNetUpdate = function(update) {
|
| - // TODO(tyoverby): Implement
|
| + media.onReceiveConstants = function(constants) {
|
| + for (var key in constants.eventTypes) {
|
| + var value = constants.eventTypes[key];
|
| + eventTypes_[value] = key;
|
| + }
|
| +
|
| + for (var key in constants.eventPhases) {
|
| + var value = constants.eventPhases[key];
|
| + eventPhases_[value] = key;
|
| + }
|
| + };
|
| +
|
| + media.cacheForUrl = function(url) {
|
| + return cacheEntriesByKey_[url];
|
| + };
|
| +
|
| + media.onNetUpdate = function(updates) {
|
| + updates.forEach(function(update) {
|
| + var id = update.source.id;
|
| + if (!cacheEntries_[id])
|
| + cacheEntries_[id] = new media.CacheEntry;
|
| +
|
| + switch (eventPhases_[update.phase] + '.' + eventTypes_[update.type]) {
|
| + case 'PHASE_BEGIN.DISK_CACHE_ENTRY_IMPL':
|
| + var key = update.params.key;
|
| +
|
| + // Merge this source with anything we already know about this key.
|
| + if (cacheEntriesByKey_[key]) {
|
| + cacheEntriesByKey_[key].merge(cacheEntries_[id]);
|
| + cacheEntries_[id] = cacheEntriesByKey_[key];
|
| + } else {
|
| + cacheEntriesByKey_[key] = cacheEntries_[id];
|
| + }
|
| + cacheEntriesByKey_[key].key = key;
|
| + break;
|
| +
|
| + case 'PHASE_BEGIN.SPARSE_READ':
|
| + cacheEntries_[id].readBytes(update.params.offset,
|
| + update.params.buff_len);
|
| + cacheEntries_[id].sparse = true;
|
| + break;
|
| +
|
| + case 'PHASE_BEGIN.SPARSE_WRITE':
|
| + cacheEntries_[id].writeBytes(update.params.offset,
|
| + update.params.buff_len);
|
| + cacheEntries_[id].sparse = true;
|
| + break;
|
| +
|
| + case 'PHASE_BEGIN.URL_REQUEST_START_JOB':
|
| + requestURLs_[update.source.id] = update.params.url;
|
| + break;
|
| +
|
| + case 'PHASE_NONE.HTTP_TRANSACTION_READ_RESPONSE_HEADERS':
|
| + // Record the total size of the file if this was a range request.
|
| + var range = /content-range:\s*bytes\s*\d+-\d+\/(\d+)/i.exec(
|
| + update.params.headers);
|
| + var key = requestURLs_[update.source.id];
|
| + delete requestURLs_[update.source.id];
|
| + if (range && key) {
|
| + if (!cacheEntriesByKey_[key]) {
|
| + cacheEntriesByKey_[key] = new media.CacheEntry;
|
| + cacheEntriesByKey_[key].key = key;
|
| + }
|
| + cacheEntriesByKey_[key].size = range[1];
|
| + }
|
| + break;
|
| + }
|
| + });
|
| };
|
|
|
| media.onRendererTerminated = function(renderId) {
|
| @@ -99,5 +187,6 @@ var media = (function() {
|
| }
|
| };
|
|
|
| + chrome.send('getEverything');
|
| return media;
|
| }());
|
|
|