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

Side by Side Diff: chrome/browser/resources/sync_internals/sync_log.js

Issue 160083002: Refactor about:sync's events framework (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add semicolons Created 6 years, 10 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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 // require: cr.js 5 // require: cr.js
6 // require: cr/event_target.js 6 // require: cr/event_target.js
7 7
8 /** 8 /**
9 * @fileoverview This creates a log object which listens to and 9 * @fileoverview This creates a log object which listens to and
10 * records all sync events. 10 * records all sync events.
11 */ 11 */
12 12
13 cr.define('chrome.sync', function() { 13 cr.define('chrome.sync', function() {
14 'use strict';
15
16 var eventsByCategory = {
17 notifier: [
18 'onIncomingNotification',
19 'onNotificationStateChange',
20 ],
21
22 manager: [
23 'onActionableError',
24 'onChangesApplied',
25 'onChangesComplete',
26 'onClearServerDataFailed',
27 'onClearServerDataSucceeded',
28 'onConnectionStatusChange',
29 'onEncryptedTypesChanged',
30 'onEncryptionComplete',
31 'onInitializationComplete',
32 'onPassphraseAccepted',
33 'onPassphraseRequired',
34 'onStopSyncingPermanently',
35 'onSyncCycleCompleted',
36 ],
37
38 transaction: [
39 'onTransactionWrite',
40 ],
41 };
42
14 /** 43 /**
15 * Creates a new log object which then immediately starts recording 44 * Creates a new log object which then immediately starts recording
16 * sync events. Recorded entries are available in the 'entries' 45 * sync events. Recorded entries are available in the 'entries'
17 * property and there is an 'append' event which can be listened to. 46 * property and there is an 'append' event which can be listened to.
18 * @constructor 47 * @constructor
19 * @extends {cr.EventTarget} 48 * @extends {cr.EventTarget}
20 */ 49 */
21 var Log = function() { 50 var Log = function() {
22 var self = this; 51 var self = this;
23 52
24 var makeListener = function(service, event) { 53 /**
25 return function(details) { 54 * Creates a callback function to be invoked when an event arrives.
26 self.log_(service, event, details); 55 */
56 var makeCallback = function(categoryName, eventName) {
57 return function(e) {
58 self.log_(categoryName, eventName, e.details);
27 }; 59 };
28 }; 60 };
29 61
30 for (var eventType in chrome.sync.events) { 62 for (var categoryName in eventsByCategory) {
31 var events = chrome.sync.events[eventType]; 63 for (var i = 0; i < eventsByCategory[categoryName].length; ++i) {
32 for (var i = 0; i < events.length; ++i) { 64 var eventName = eventsByCategory[categoryName][i];
33 var eventName = events[i]; 65 chrome.sync.events.addEventListener(
34 var event = chrome.sync[eventName]; 66 eventName,
35 event.addListener(makeListener(eventType, eventName)); 67 makeCallback(categoryName, eventName));
36 } 68 }
37 } 69 }
38 }; 70 }
39 71
40 Log.prototype = { 72 Log.prototype = {
41 __proto__: cr.EventTarget.prototype, 73 __proto__: cr.EventTarget.prototype,
42 74
43 /** 75 /**
44 * The recorded log entries. 76 * The recorded log entries.
45 * @type {array} 77 * @type {array}
46 */ 78 */
47 entries: [], 79 entries: [],
48 80
(...skipping 19 matching lines...) Expand all
68 var e = cr.doc.createEvent('CustomEvent'); 100 var e = cr.doc.createEvent('CustomEvent');
69 e.initCustomEvent('append', false, false, entry); 101 e.initCustomEvent('append', false, false, entry);
70 this.dispatchEvent(e); 102 this.dispatchEvent(e);
71 } 103 }
72 }; 104 };
73 105
74 return { 106 return {
75 log: new Log() 107 log: new Log()
76 }; 108 };
77 }); 109 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/sync_internals/notifications.js ('k') | chrome/browser/resources/sync_internals/sync_search.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698