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

Side by Side Diff: chrome/browser/resources/engagement/site_engagement.js

Issue 2780873003: Add a browser test for the chrome://site-engagement WebUI. (Closed)
Patch Set: Address review comments Created 3 years, 8 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
« no previous file with comments | « no previous file | chrome/browser/ui/webui/engagement/site_engagement_ui_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 'use strict'; 5 'use strict';
6 6
7 // Allow a function to be provided by tests, which will be called when
8 // the page has been populated with site engagement details.
9 var resolvePageIsPopulated = null;
10 var pageIsPopulatedPromise = new Promise((resolve, reject) => {
11 resolvePageIsPopulated = resolve;
12 });
13
14 function whenPageIsPopulatedForTest() {
15 return pageIsPopulatedPromise;
16 }
17
7 define('main', [ 18 define('main', [
8 'chrome/browser/engagement/site_engagement.mojom', 19 'chrome/browser/engagement/site_engagement.mojom',
9 'content/public/renderer/frame_interfaces', 20 'content/public/renderer/frame_interfaces',
10 ], function(siteEngagementMojom, frameInterfaces) { 21 ], (siteEngagementMojom, frameInterfaces) => {
11 return function() { 22 return () => {
12 var uiHandler = new siteEngagementMojom.SiteEngagementUIHandlerPtr( 23 var uiHandler = new siteEngagementMojom.SiteEngagementUIHandlerPtr(
13 frameInterfaces.getInterface( 24 frameInterfaces.getInterface(
14 siteEngagementMojom.SiteEngagementUIHandler.name)); 25 siteEngagementMojom.SiteEngagementUIHandler.name));
15 26
16 var engagementTableBody = $('engagement-table-body'); 27 var engagementTableBody = $('engagement-table-body');
17 var updateInterval = null; 28 var updateInterval = null;
18 var info = null; 29 var info = null;
19 var sortKey = 'score'; 30 var sortKey = 'score';
20 var sortReverse = true; 31 var sortReverse = true;
21 32
22 // Set table header sort handlers. 33 // Set table header sort handlers.
23 var engagementTableHeader = $('engagement-table-header'); 34 var engagementTableHeader = $('engagement-table-header');
24 var headers = engagementTableHeader.children; 35 var headers = engagementTableHeader.children;
25 for (var i = 0; i < headers.length; i++) { 36 for (var i = 0; i < headers.length; i++) {
26 headers[i].addEventListener('click', function(e) { 37 headers[i].addEventListener('click', (e) => {
27 var newSortKey = e.target.getAttribute('sort-key'); 38 var newSortKey = e.target.getAttribute('sort-key');
28 if (sortKey == newSortKey) { 39 if (sortKey == newSortKey) {
29 sortReverse = !sortReverse; 40 sortReverse = !sortReverse;
30 } else { 41 } else {
31 sortKey = newSortKey; 42 sortKey = newSortKey;
32 sortReverse = false; 43 sortReverse = false;
33 } 44 }
34 var oldSortColumn = document.querySelector('.sort-column'); 45 var oldSortColumn = document.querySelector('.sort-column');
35 oldSortColumn.classList.remove('sort-column'); 46 oldSortColumn.classList.remove('sort-column');
36 e.target.classList.add('sort-column'); 47 e.target.classList.add('sort-column');
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 * Remove all rows from the engagement table. 121 * Remove all rows from the engagement table.
111 */ 122 */
112 function clearTable() { 123 function clearTable() {
113 engagementTableBody.innerHTML = ''; 124 engagementTableBody.innerHTML = '';
114 } 125 }
115 126
116 /** 127 /**
117 * Sort the engagement info based on |sortKey| and |sortReverse|. 128 * Sort the engagement info based on |sortKey| and |sortReverse|.
118 */ 129 */
119 function sortInfo() { 130 function sortInfo() {
120 info.sort(function(a, b) { 131 info.sort((a, b) => {
121 return (sortReverse ? -1 : 1) * 132 return (sortReverse ? -1 : 1) *
122 compareTableItem(sortKey, a, b); 133 compareTableItem(sortKey, a, b);
123 }); 134 });
124 } 135 }
125 136
126 /** 137 /**
127 * Compares two SiteEngagementInfo objects based on |sortKey|. 138 * Compares two SiteEngagementInfo objects based on |sortKey|.
128 * @param {string} sortKey The name of the property to sort by. 139 * @param {string} sortKey The name of the property to sort by.
129 * @return {number} A negative number if |a| should be ordered before |b|, a 140 * @return {number} A negative number if |a| should be ordered before |b|, a
130 * positive number otherwise. 141 * positive number otherwise.
(...skipping 13 matching lines...) Expand all
144 return 0; 155 return 0;
145 } 156 }
146 157
147 /** 158 /**
148 * Regenerates the engagement table from |info|. 159 * Regenerates the engagement table from |info|.
149 */ 160 */
150 function renderTable() { 161 function renderTable() {
151 clearTable(); 162 clearTable();
152 sortInfo(); 163 sortInfo();
153 // Round each score to 2 decimal places. 164 // Round each score to 2 decimal places.
154 info.forEach(function(info) { 165 info.forEach((info) => {
155 info.score = Number(Math.round(info.score * 100) / 100); 166 info.score = Number(Math.round(info.score * 100) / 100);
156 engagementTableBody.appendChild(createRow(info)); 167 engagementTableBody.appendChild(createRow(info));
157 }); 168 });
169
170 resolvePageIsPopulated();
158 } 171 }
159 172
160 /** 173 /**
161 * Retrieve site engagement info and render the engagement table. 174 * Retrieve site engagement info and render the engagement table.
162 */ 175 */
163 function updateEngagementTable() { 176 function updateEngagementTable() {
164 // Populate engagement table. 177 // Populate engagement table.
165 uiHandler.getSiteEngagementInfo().then(function(response) { 178 uiHandler.getSiteEngagementInfo().then((response) => {
166 info = response.info; 179 info = response.info;
167 renderTable(info); 180 renderTable(info);
168 }); 181 });
169 }; 182 };
170 183
171 updateEngagementTable(); 184 updateEngagementTable();
172 enableAutoupdate(); 185 enableAutoupdate();
173 }; 186 };
174 }); 187 });
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/webui/engagement/site_engagement_ui_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698