Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(233)

Side by Side Diff: chrome/browser/resources/offline_pages/offline_internals.js

Issue 2069933002: [Offline pages] Extract internals page interaction with browser to a proxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@i2
Patch Set: more code review fixes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /**
6 * @typedef {{
7 * onlineUrl: string,
8 * creationTime: number,
9 * id: string,
10 * namespace: string,
11 * size: string,
12 * filePath: string,
13 * lastAccessTime: number,
14 * accessCount: number
15 * }}
16 */
17 var OfflinePage;
18
19 /**
20 * @typedef {{
21 * status: string,
22 * onlineUrl: string,
23 * creationTime: number,
24 * id: string,
25 * namespace: string,
26 * lastAttempt: number
27 * }}
28 */
29 var SavePageRequest;
30
31 cr.define('offlineInternals', function() { 5 cr.define('offlineInternals', function() {
32 'use strict'; 6 'use strict';
33 7
34 /** @type {!Array<OfflinePage>} */ 8 /** @type {!Array<OfflinePage>} */
35 var offlinePages = []; 9 var offlinePages = [];
36 10
37 /** @type {!Array<SavePageRequest>} */ 11 /** @type {!Array<SavePageRequest>} */
38 var savePageRequests = []; 12 var savePageRequests = [];
39 13
14 /** @type {offlineInternals.OfflineInternalsBrowserProxy} */
15 var browserProxy_;
16
40 /** 17 /**
41 * Fill stored pages table. 18 * Fill stored pages table.
42 * @param {!Array<OfflinePage>} pages An array object representing 19 * @param {!Array<OfflinePage>} pages An array object representing
43 * stored offline pages. 20 * stored offline pages.
44 */ 21 */
45 function fillStoredPages(pages) { 22 function fillStoredPages(pages) {
46 var storedPagesTable = $('stored-pages'); 23 var storedPagesTable = $('stored-pages');
47 storedPagesTable.textContent = ''; 24 storedPagesTable.textContent = '';
48 25
49 for (var i = 0; i < pages.length; i++) { 26 for (var i = 0; i < pages.length; i++) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 78
102 requestQueueTable.appendChild(row); 79 requestQueueTable.appendChild(row);
103 } 80 }
104 savePageRequests = requests; 81 savePageRequests = requests;
105 } 82 }
106 83
107 /** 84 /**
108 * Refresh all displayed information. 85 * Refresh all displayed information.
109 */ 86 */
110 function refreshAll() { 87 function refreshAll() {
111 cr.sendWithPromise('getStoredPagesInfo').then(fillStoredPages); 88 browserProxy_.getStoredPages().then(fillStoredPages);
112 cr.sendWithPromise('getRequestQueueInfo').then(fillRequestQueue); 89 browserProxy_.getRequestQueue().then(fillRequestQueue);
113 } 90 }
114 91
115 /** 92 /**
116 * Delete all pages in the offline store. 93 * Delete all pages in the offline store.
117 */ 94 */
118 function deleteAllPages() { 95 function deleteAllPages() {
119 cr.sendWithPromise('deleteAllPages').then(pagesDeleted); 96 browserProxy_.deleteAllPages().then(pagesDeleted);
120 } 97 }
121 98
122 /** 99 /**
123 * Callback when pages are deleted. 100 * Callback when pages are deleted.
124 * @param {string} status The status of the request. 101 * @param {string} status The status of the request.
125 */ 102 */
126 function pagesDeleted(status) { 103 function pagesDeleted(status) {
127 $('page-actions-info').textContent = status; 104 $('page-actions-info').textContent = status;
128 cr.sendWithPromise('getStoredPagesInfo').then(fillStoredPages); 105 browserProxy_.getStoredPages().then(fillStoredPages);
129 } 106 }
130 107
131 /** 108 /**
132 * Helper function to JSON-escape and add quotes around a string.
133 * @param {string} strObj The obj to escape and add quotes around.
134 * @return {string} The escaped string.
135 */
136 function escapeString(strObj) {
137 // CSV single quotes are encoded as "". There can also be commas.
138 return '"' + strObj.replace(/"/g, '""') + '"';
139 }
140
141 /**
142 * Downloads all the stored page and request queue information into a file. 109 * Downloads all the stored page and request queue information into a file.
143 * TODO(chili): Create a CSV writer that can abstract out the line joining. 110 * TODO(chili): Create a CSV writer that can abstract out the line joining.
144 */ 111 */
145 function download() { 112 function download() {
146 var json = JSON.stringify({ 113 var json = JSON.stringify({
147 offlinePages: offlinePages, 114 offlinePages: offlinePages,
148 savePageRequests: savePageRequests 115 savePageRequests: savePageRequests
149 }, null, 2); 116 }, null, 2);
150 117
151 window.open( 118 window.open(
152 'data:application/json,' + encodeURIComponent(json), 119 'data:application/json,' + encodeURIComponent(json),
153 'dump.json'); 120 'dump.json');
154 } 121 }
155 122
156 /** 123 /**
157 * Delete selected pages from the offline store. 124 * Delete selected pages from the offline store.
158 */ 125 */
159 function deleteSelectedPages() { 126 function deleteSelectedPages() {
160 var checkboxes = document.getElementsByName('stored'); 127 var checkboxes = document.getElementsByName('stored');
161 var selectedIds = []; 128 var selectedIds = [];
162 129
163 for (var i = 0; i < checkboxes.length; i++) { 130 for (var i = 0; i < checkboxes.length; i++) {
164 if (checkboxes[i].checked) 131 if (checkboxes[i].checked)
165 selectedIds.push(checkboxes[i].value); 132 selectedIds.push(checkboxes[i].value);
166 } 133 }
167 134
168 cr.sendWithPromise('deleteSelectedPages', selectedIds).then(pagesDeleted); 135 browserProxy_.deleteSelectedPages(selectedIds).then(pagesDeleted);
169 } 136 }
170 137
171 function initialize() { 138 function initialize() {
172 $('clear-all').onclick = deleteAllPages; 139 $('clear-all').onclick = deleteAllPages;
173 $('clear-selected').onclick = deleteSelectedPages; 140 $('clear-selected').onclick = deleteSelectedPages;
174 $('refresh').onclick = refreshAll; 141 $('refresh').onclick = refreshAll;
175 $('download').onclick = download; 142 $('download').onclick = download;
143 browserProxy_ =
144 offlineInternals.OfflineInternalsBrowserProxyImpl.getInstance();
176 refreshAll(); 145 refreshAll();
177 } 146 }
178 147
179 // Return an object with all of the exports. 148 // Return an object with all of the exports.
180 return { 149 return {
181 initialize: initialize, 150 initialize: initialize,
182 }; 151 };
183 }); 152 });
184 153
185 document.addEventListener('DOMContentLoaded', offlineInternals.initialize); 154 document.addEventListener('DOMContentLoaded', offlineInternals.initialize);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698