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 #include "chrome/browser/sync/js/js_mutation_event_observer.h" | 5 #include "chrome/browser/sync/js/js_mutation_event_observer.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 | 28 |
29 void JsMutationEventObserver::InvalidateWeakPtrs() { | 29 void JsMutationEventObserver::InvalidateWeakPtrs() { |
30 weak_ptr_factory_.InvalidateWeakPtrs(); | 30 weak_ptr_factory_.InvalidateWeakPtrs(); |
31 } | 31 } |
32 | 32 |
33 void JsMutationEventObserver::SetJsEventHandler( | 33 void JsMutationEventObserver::SetJsEventHandler( |
34 const WeakHandle<JsEventHandler>& event_handler) { | 34 const WeakHandle<JsEventHandler>& event_handler) { |
35 event_handler_ = event_handler; | 35 event_handler_ = event_handler; |
36 } | 36 } |
37 | 37 |
38 void JsMutationEventObserver::OnTransactionStart( | |
39 const tracked_objects::Location& location, | |
40 const syncable::WriterTag& writer) { | |
41 DCHECK(non_thread_safe_.CalledOnValidThread()); | |
42 if (!event_handler_.IsInitialized()) { | |
43 return; | |
44 } | |
45 DictionaryValue details; | |
46 details.SetString("location", location.ToString()); | |
47 details.SetString("writer", syncable::WriterTagToString(writer)); | |
48 HandleJsEvent(FROM_HERE, "onTransactionStart", JsEventDetails(&details)); | |
49 } | |
50 | |
51 namespace { | 38 namespace { |
52 | 39 |
53 // Max number of changes we attempt to convert to values (to avoid | 40 // Max number of changes we attempt to convert to values (to avoid |
54 // running out of memory). | 41 // running out of memory). |
55 const size_t kChangeLimit = 100; | 42 const size_t kChangeLimit = 100; |
56 | 43 |
57 } // namespace | 44 } // namespace |
58 | 45 |
59 void JsMutationEventObserver::OnChangesApplied( | 46 void JsMutationEventObserver::OnChangesApplied( |
60 syncable::ModelType model_type, | 47 syncable::ModelType model_type, |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 return; | 91 return; |
105 } | 92 } |
106 DictionaryValue details; | 93 DictionaryValue details; |
107 details.Set("writeTransactionInfo", | 94 details.Set("writeTransactionInfo", |
108 write_transaction_info.Get().ToValue(kChangeLimit)); | 95 write_transaction_info.Get().ToValue(kChangeLimit)); |
109 details.Set("modelsWithChanges", | 96 details.Set("modelsWithChanges", |
110 syncable::ModelTypeBitSetToValue(models_with_changes)); | 97 syncable::ModelTypeBitSetToValue(models_with_changes)); |
111 HandleJsEvent(FROM_HERE, "onTransactionWrite", JsEventDetails(&details)); | 98 HandleJsEvent(FROM_HERE, "onTransactionWrite", JsEventDetails(&details)); |
112 } | 99 } |
113 | 100 |
114 void JsMutationEventObserver::OnTransactionEnd( | |
115 const tracked_objects::Location& location, | |
116 const syncable::WriterTag& writer) { | |
117 DCHECK(non_thread_safe_.CalledOnValidThread()); | |
118 if (!event_handler_.IsInitialized()) { | |
119 return; | |
120 } | |
121 DictionaryValue details; | |
122 details.SetString("location", location.ToString()); | |
123 details.SetString("writer", syncable::WriterTagToString(writer)); | |
124 HandleJsEvent(FROM_HERE, "onTransactionEnd", JsEventDetails(&details)); | |
125 } | |
126 | |
127 void JsMutationEventObserver::HandleJsEvent( | 101 void JsMutationEventObserver::HandleJsEvent( |
128 const tracked_objects::Location& from_here, | 102 const tracked_objects::Location& from_here, |
129 const std::string& name, const JsEventDetails& details) { | 103 const std::string& name, const JsEventDetails& details) { |
130 if (!event_handler_.IsInitialized()) { | 104 if (!event_handler_.IsInitialized()) { |
131 NOTREACHED(); | 105 NOTREACHED(); |
132 return; | 106 return; |
133 } | 107 } |
134 event_handler_.Call(from_here, | 108 event_handler_.Call(from_here, |
135 &JsEventHandler::HandleJsEvent, name, details); | 109 &JsEventHandler::HandleJsEvent, name, details); |
136 } | 110 } |
137 | 111 |
138 } // namespace browser_sync | 112 } // namespace browser_sync |
OLD | NEW |