1// Copyright (c) 2011 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 * This view displays information on the HTTP cache.
7 */
8var HttpCacheView = (function() {
9  'use strict';
10
11  // We inherit from DivView.
12  var superClass = DivView;
13
14  /**
15   *  @constructor
16   */
17  function HttpCacheView() {
18    assertFirstConstructorCall(HttpCacheView);
19
20    // Call superclass's constructor.
21    superClass.call(this, HttpCacheView.MAIN_BOX_ID);
22
23    this.statsDiv_ = $(HttpCacheView.STATS_DIV_ID);
24
25    // Register to receive http cache info.
26    g_browser.addHttpCacheInfoObserver(this, true);
27  }
28
29  HttpCacheView.TAB_ID = 'tab-handle-http-cache';
30  HttpCacheView.TAB_NAME = 'Cache';
31  HttpCacheView.TAB_HASH = '#httpCache';
32
33  // IDs for special HTML elements in http_cache_view.html
34  HttpCacheView.MAIN_BOX_ID = 'http-cache-view-tab-content';
35  HttpCacheView.STATS_DIV_ID = 'http-cache-view-cache-stats';
36
37  cr.addSingletonGetter(HttpCacheView);
38
39  HttpCacheView.prototype = {
40    // Inherit the superclass's methods.
41    __proto__: superClass.prototype,
42
43    onLoadLogFinish: function(data) {
44      return this.onHttpCacheInfoChanged(data.httpCacheInfo);
45    },
46
47    onHttpCacheInfoChanged: function(info) {
48      this.statsDiv_.innerHTML = '';
49
50      if (!info)
51        return false;
52
53      // Print the statistics.
54      var statsUl = addNode(this.statsDiv_, 'ul');
55      for (var statName in info.stats) {
56        var li = addNode(statsUl, 'li');
57        addTextNode(li, statName + ': ' + info.stats[statName]);
58      }
59      return true;
60    }
61  };
62
63  return HttpCacheView;
64})();
65