OLD | NEW |
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 Loading... |
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 }); |
OLD | NEW |