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

Side by Side Diff: chrome/browser/resources/sync_internals/notifications.html

Issue 7015031: [Sync] Clean up notifications tab in chrome://sync-internals (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/sync/engine/syncapi.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 <script> 1 <script>
2 (function () { 2 (function () {
3 // Contains all notifications received since the page was loaded as a 3
4 // map from each data type to the number of notifications received for 4 // TODO(akalin): Use table.js.
5 // it.
6 chrome.sync.notifications = {};
7 5
8 function updateNotificationsEnabledInfo(notificationsEnabled) { 6 function updateNotificationsEnabledInfo(notificationsEnabled) {
9 var notificationsEnabledInfo = 7 var notificationsEnabledInfo =
10 document.getElementById('notificationsEnabledInfo'); 8 document.getElementById('notificationsEnabledInfo');
11 jstProcess( 9 jstProcess(
12 new JsEvalContext({ 'notificationsEnabled': notificationsEnabled }), 10 new JsEvalContext({ 'notificationsEnabled': notificationsEnabled }),
13 notificationsEnabledInfo); 11 notificationsEnabledInfo);
14 } 12 }
15 13
16 function updateNotificationInfo(notification) { 14 // Contains all notifications received since the page was loaded as a
17 var notificationInfo = document.getElementById('notificationInfo'); 15 // map from each data type to the number of notifications received for
18 jstProcess( 16 // it.
19 new JsEvalContext({ 17 chrome.sync.notifications = {};
20 'notificationInfo': JSON.stringify(notification, null, 2) 18
21 }), 19 /**
22 notificationInfo); 20 * Merges d1 and d2 (with d2 taking precedence) and returns the result.
21 */
22 function mergeDictionaries(d1, d2) {
23 var d = {};
24 for (var k in d1) {
25 d[k] = d1[k];
26 }
27 for (var k in d2) {
28 d[k] = d2[k];
29 }
30 return d;
31 }
32
33 /**
34 * Merge notificationInfo into chrome.sync.notifications.
35 */
36 function updateNotificationsFromNotificationInfo(notificationInfo) {
37 for (var k in notificationInfo) {
38 chrome.sync.notifications[k] =
39 mergeDictionaries(chrome.sync.notifications[k] || {},
40 notificationInfo[k]);
41 chrome.sync.notifications[k].type = k;
Nicolas Zea 2011/05/12 23:38:09 Is this information not in the original notificati
akalin 2011/05/13 00:10:18 It is, but only as the key. I'm stuffing it into
42 chrome.sync.notifications[k].sessionCount =
43 chrome.sync.notifications[k].sessionCount || 0;
44 }
45 }
46
47 function incrementSessionNotificationCount(changedType) {
48 chrome.sync.notifications[changedType].sessionCount =
Nicolas Zea 2011/05/12 23:38:09 Is it possible this data will be overwritten when
akalin 2011/05/13 00:10:18 No, because we don't only the sessionCount in this
49 chrome.sync.notifications[changedType].sessionCount || 0;
50 ++chrome.sync.notifications[changedType].sessionCount;
51 }
52
53 function updateNotificationInfoTable() {
54 var notificationInfoTable =
55 document.getElementById('notificationInfo');
56 var infos = [];
57 for (var k in chrome.sync.notifications) {
58 infos.push(chrome.sync.notifications[k]);
59 }
60 jstProcess(new JsEvalContext({ 'notifications': infos }),
61 notificationInfoTable);
62 }
63
64 function updateNotificationInfo(notificationInfo) {
65 updateNotificationsFromNotificationInfo(notificationInfo);
66 updateNotificationInfoTable();
23 } 67 }
24 68
25 function onLoad() { 69 function onLoad() {
26 chrome.sync.getNotificationState(updateNotificationsEnabledInfo); 70 chrome.sync.getNotificationState(updateNotificationsEnabledInfo);
27 chrome.sync.getNotificationInfo(updateNotificationInfo); 71 chrome.sync.getNotificationInfo(updateNotificationInfo);
28 chrome.sync.onNotificationStateChange.addListener( 72 chrome.sync.onNotificationStateChange.addListener(
29 function(details) { updateNotificationsEnabledInfo(details.enabled); }); 73 function(details) { updateNotificationsEnabledInfo(details.enabled); });
30 74
31 chrome.sync.onIncomingNotification.addListener(function(details) { 75 chrome.sync.onIncomingNotification.addListener(function(details) {
32 var changedTypes = details.changedTypes; 76 var changedTypes = details.changedTypes;
33 for (var i = 0; i < changedTypes.length; ++i) { 77 for (var i = 0; i < changedTypes.length; ++i) {
34 var changedType = changedTypes[i]; 78 incrementSessionNotificationCount(changedTypes[i]);
35 chrome.sync.notifications[changedType] =
36 chrome.sync.notifications[changedType] || 0;
37 ++chrome.sync.notifications[changedType];
38 } 79 }
80 updateNotificationInfoTable();
39 81
40 var infos = []; 82 // Also update total counts.
41 for (var k in chrome.sync.notifications) {
42 var info = {
43 'modelType': k,
44 'notificationCount': chrome.sync.notifications[k]
45 };
46 infos.push(info);
47 }
48
49 var notificationsInfo =
50 document.getElementById('notificationsInfo');
51 jstProcess(new JsEvalContext({ 'notifications': infos }),
52 notificationsInfo);
53 chrome.sync.getNotificationInfo(updateNotificationInfo); 83 chrome.sync.getNotificationInfo(updateNotificationInfo);
54 }); 84 });
55 } 85 }
56 86
57 document.addEventListener("DOMContentLoaded", onLoad, false); 87 document.addEventListener("DOMContentLoaded", onLoad, false);
58 })(); 88 })();
59 </script> 89 </script>
60 90
61 <style> 91 <style>
62 table#notificationsInfo tr:nth-child(odd) { 92 table#notificationInfo tr:nth-child(odd) {
63 background: #eff3ff; 93 background: #eff3ff;
64 } 94 }
65 </style> 95 </style>
66 96
67 <p id='notificationsEnabledInfo'> 97 <p id='notificationsEnabledInfo'>
68 Enabled: <span jscontent='notificationsEnabled'></span> 98 Enabled: <span jscontent='notificationsEnabled'></span>
69 </p> 99 </p>
70 <pre id='notificationInfo'><span jscontent='notificationInfo'></span></pre> 100 <table id='notificationInfo'>
71 <table id='notificationsInfo'> 101 <tr>
102 <th>Type</th>
103 <th>Total count</th>
104 <th>Session count</th>
105 <th>Payload</th>
106 </tr>
72 <tr jsselect='notifications'> 107 <tr jsselect='notifications'>
73 <td jscontent='modelType'/> 108 <td jscontent='type'/>
74 <td jscontent='notificationCount'/> 109 <td jscontent='totalCount'/>
110 <td jscontent='sessionCount'/>
111 <td jscontent='payload'/>
75 </tr> 112 </tr>
76 </table> 113 </table>
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/sync/engine/syncapi.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698