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.
6 * This view displays information related to Prerendering.
8 var PrerenderView
= (function() {
11 // We inherit from DivView.
12 var superClass
= DivView
;
17 function PrerenderView() {
18 assertFirstConstructorCall(PrerenderView
);
20 // Call superclass's constructor.
21 superClass
.call(this, PrerenderView
.MAIN_BOX_ID
);
23 g_browser
.addPrerenderInfoObserver(this, true);
24 this.prerenderEnabledSpan_
= $(PrerenderView
.ENABLED_SPAN_ID
);
25 this.prerenderOmniboxEnabledSpan_
=
26 $(PrerenderView
.OMNIBOX_ENABLED_SPAN_ID
);
27 this.prerenderHistoryDiv_
= $(PrerenderView
.HISTORY_DIV_ID
);
28 this.prerenderActiveDiv_
= $(PrerenderView
.ACTIVE_DIV_ID
);
31 // ID for special HTML element in category_tabs.html
32 PrerenderView
.TAB_HANDLE_ID
= 'tab-handle-prerender';
34 // IDs for special HTML elements in prerender_view.html
35 PrerenderView
.MAIN_BOX_ID
= 'prerender-view-tab-content';
36 PrerenderView
.ENABLED_SPAN_ID
= 'prerender-view-enabled-span';
37 PrerenderView
.OMNIBOX_ENABLED_SPAN_ID
= 'prerender-view-omnibox-enabled-span';
38 PrerenderView
.HISTORY_DIV_ID
= 'prerender-view-history-div';
39 PrerenderView
.ACTIVE_DIV_ID
= 'prerender-view-active-div';
41 cr
.addSingletonGetter(PrerenderView
);
43 PrerenderView
.prototype = {
44 // Inherit the superclass's methods.
45 __proto__
: superClass
.prototype,
47 onLoadLogFinish: function(data
) {
48 return this.onPrerenderInfoChanged(data
.prerenderInfo
);
51 onPrerenderInfoChanged: function(prerenderInfo
) {
52 this.prerenderEnabledSpan_
.textContent
= '';
53 this.prerenderOmniboxEnabledSpan_
.textContent
= '';
54 this.prerenderHistoryDiv_
.innerHTML
= '';
55 this.prerenderActiveDiv_
.innerHTML
= '';
57 if (prerenderInfo
&& ('enabled' in prerenderInfo
)) {
58 this.prerenderEnabledSpan_
.textContent
=
59 prerenderInfo
.enabled
.toString();
60 if (prerenderInfo
.enabled_note
) {
61 this.prerenderEnabledSpan_
.textContent
+=
62 ' ' + prerenderInfo
.enabled_note
;
66 if (prerenderInfo
&& ('omnibox_enabled' in prerenderInfo
)) {
67 this.prerenderOmniboxEnabledSpan_
.textContent
=
68 prerenderInfo
.omnibox_enabled
.toString();
71 if (!isValidPrerenderInfo(prerenderInfo
))
74 var tabPrinter
= createHistoryTablePrinter(prerenderInfo
.history
);
75 tabPrinter
.toHTML(this.prerenderHistoryDiv_
, 'styled-table');
77 var tabPrinter
= createActiveTablePrinter(prerenderInfo
.active
);
78 tabPrinter
.toHTML(this.prerenderActiveDiv_
, 'styled-table');
84 function isValidPrerenderInfo(prerenderInfo
) {
85 if (prerenderInfo
== null) {
88 if (!('history' in prerenderInfo
) ||
89 !('active' in prerenderInfo
) ||
90 !('enabled' in prerenderInfo
)) {
96 function createHistoryTablePrinter(prerenderHistory
) {
97 var tablePrinter
= new TablePrinter();
98 tablePrinter
.addHeaderCell('Origin');
99 tablePrinter
.addHeaderCell('URL');
100 tablePrinter
.addHeaderCell('Final Status');
101 tablePrinter
.addHeaderCell('Time');
103 for (var i
= 0; i
< prerenderHistory
.length
; i
++) {
104 var historyEntry
= prerenderHistory
[i
];
105 tablePrinter
.addRow();
106 tablePrinter
.addCell(historyEntry
.origin
);
107 tablePrinter
.addCell(historyEntry
.url
);
108 tablePrinter
.addCell(historyEntry
.final_status
);
110 var date
= new Date(parseInt(historyEntry
.end_time
));
111 // TODO(eroman): Switch to addNodeWithDate()
112 tablePrinter
.addCell(timeutil
.dateToString(date
));
117 function createActiveTablePrinter(prerenderActive
) {
118 var tablePrinter
= new TablePrinter();
119 tablePrinter
.addHeaderCell('URL');
120 tablePrinter
.addHeaderCell('Duration');
122 for (var i
= 0; i
< prerenderActive
.length
; i
++) {
123 var activeEntry
= prerenderActive
[i
];
124 tablePrinter
.addRow();
125 tablePrinter
.addCell(activeEntry
.url
);
126 tablePrinter
.addCell(activeEntry
.duration
);
131 return PrerenderView
;