OLD | NEW |
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 #include "ios/chrome/browser/ui/webui/sync_internals/sync_internals_message_hand
ler.h" | 5 #include "ios/chrome/browser/ui/webui/sync_internals/sync_internals_message_hand
ler.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "components/browser_sync/profile_sync_service.h" | 10 #include "components/browser_sync/profile_sync_service.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 | 30 |
31 SyncInternalsMessageHandler::SyncInternalsMessageHandler() | 31 SyncInternalsMessageHandler::SyncInternalsMessageHandler() |
32 : is_registered_(false), | 32 : is_registered_(false), |
33 is_registered_for_counters_(false), | 33 is_registered_for_counters_(false), |
34 weak_ptr_factory_(this) {} | 34 weak_ptr_factory_(this) {} |
35 | 35 |
36 SyncInternalsMessageHandler::~SyncInternalsMessageHandler() { | 36 SyncInternalsMessageHandler::~SyncInternalsMessageHandler() { |
37 if (js_controller_) | 37 if (js_controller_) |
38 js_controller_->RemoveJsEventHandler(this); | 38 js_controller_->RemoveJsEventHandler(this); |
39 | 39 |
40 syncer::SyncService* service = GetSyncService(); | 40 sync_driver::SyncService* service = GetSyncService(); |
41 if (service && service->HasObserver(this)) { | 41 if (service && service->HasObserver(this)) { |
42 service->RemoveObserver(this); | 42 service->RemoveObserver(this); |
43 service->RemoveProtocolEventObserver(this); | 43 service->RemoveProtocolEventObserver(this); |
44 } | 44 } |
45 | 45 |
46 if (service && is_registered_for_counters_) { | 46 if (service && is_registered_for_counters_) { |
47 service->RemoveTypeDebugInfoObserver(this); | 47 service->RemoveTypeDebugInfoObserver(this); |
48 } | 48 } |
49 } | 49 } |
50 | 50 |
51 void SyncInternalsMessageHandler::RegisterMessages() { | 51 void SyncInternalsMessageHandler::RegisterMessages() { |
52 DCHECK_CURRENTLY_ON(web::WebThread::UI); | 52 DCHECK_CURRENTLY_ON(web::WebThread::UI); |
53 | 53 |
54 web_ui()->RegisterMessageCallback( | 54 web_ui()->RegisterMessageCallback( |
55 syncer::sync_ui_util::kRegisterForEvents, | 55 sync_driver::sync_ui_util::kRegisterForEvents, |
56 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForEvents, | 56 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForEvents, |
57 base::Unretained(this))); | 57 base::Unretained(this))); |
58 | 58 |
59 web_ui()->RegisterMessageCallback( | 59 web_ui()->RegisterMessageCallback( |
60 syncer::sync_ui_util::kRegisterForPerTypeCounters, | 60 sync_driver::sync_ui_util::kRegisterForPerTypeCounters, |
61 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters, | 61 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters, |
62 base::Unretained(this))); | 62 base::Unretained(this))); |
63 | 63 |
64 web_ui()->RegisterMessageCallback( | 64 web_ui()->RegisterMessageCallback( |
65 syncer::sync_ui_util::kRequestUpdatedAboutInfo, | 65 sync_driver::sync_ui_util::kRequestUpdatedAboutInfo, |
66 base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, | 66 base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, |
67 base::Unretained(this))); | 67 base::Unretained(this))); |
68 | 68 |
69 web_ui()->RegisterMessageCallback( | 69 web_ui()->RegisterMessageCallback( |
70 syncer::sync_ui_util::kRequestListOfTypes, | 70 sync_driver::sync_ui_util::kRequestListOfTypes, |
71 base::Bind(&SyncInternalsMessageHandler::HandleRequestListOfTypes, | 71 base::Bind(&SyncInternalsMessageHandler::HandleRequestListOfTypes, |
72 base::Unretained(this))); | 72 base::Unretained(this))); |
73 | 73 |
74 web_ui()->RegisterMessageCallback( | 74 web_ui()->RegisterMessageCallback( |
75 syncer::sync_ui_util::kGetAllNodes, | 75 sync_driver::sync_ui_util::kGetAllNodes, |
76 base::Bind(&SyncInternalsMessageHandler::HandleGetAllNodes, | 76 base::Bind(&SyncInternalsMessageHandler::HandleGetAllNodes, |
77 base::Unretained(this))); | 77 base::Unretained(this))); |
78 } | 78 } |
79 | 79 |
80 void SyncInternalsMessageHandler::HandleRegisterForEvents( | 80 void SyncInternalsMessageHandler::HandleRegisterForEvents( |
81 const base::ListValue* args) { | 81 const base::ListValue* args) { |
82 DCHECK(args->empty()); | 82 DCHECK(args->empty()); |
83 | 83 |
84 // is_registered_ flag protects us from double-registering. This could | 84 // is_registered_ flag protects us from double-registering. This could |
85 // happen on a page refresh, where the JavaScript gets re-run but the | 85 // happen on a page refresh, where the JavaScript gets re-run but the |
86 // message handler remains unchanged. | 86 // message handler remains unchanged. |
87 syncer::SyncService* service = GetSyncService(); | 87 sync_driver::SyncService* service = GetSyncService(); |
88 if (service && !is_registered_) { | 88 if (service && !is_registered_) { |
89 service->AddObserver(this); | 89 service->AddObserver(this); |
90 service->AddProtocolEventObserver(this); | 90 service->AddProtocolEventObserver(this); |
91 js_controller_ = service->GetJsController(); | 91 js_controller_ = service->GetJsController(); |
92 js_controller_->AddJsEventHandler(this); | 92 js_controller_->AddJsEventHandler(this); |
93 is_registered_ = true; | 93 is_registered_ = true; |
94 } | 94 } |
95 } | 95 } |
96 | 96 |
97 void SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters( | 97 void SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters( |
98 const base::ListValue* args) { | 98 const base::ListValue* args) { |
99 DCHECK(args->empty()); | 99 DCHECK(args->empty()); |
100 | 100 |
101 if (syncer::SyncService* service = GetSyncService()) { | 101 if (sync_driver::SyncService* service = GetSyncService()) { |
102 if (!is_registered_for_counters_) { | 102 if (!is_registered_for_counters_) { |
103 service->AddTypeDebugInfoObserver(this); | 103 service->AddTypeDebugInfoObserver(this); |
104 is_registered_for_counters_ = true; | 104 is_registered_for_counters_ = true; |
105 } else { | 105 } else { |
106 // Re-register to ensure counters get re-emitted. | 106 // Re-register to ensure counters get re-emitted. |
107 service->RemoveTypeDebugInfoObserver(this); | 107 service->RemoveTypeDebugInfoObserver(this); |
108 service->AddTypeDebugInfoObserver(this); | 108 service->AddTypeDebugInfoObserver(this); |
109 } | 109 } |
110 } | 110 } |
111 } | 111 } |
112 | 112 |
113 void SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo( | 113 void SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo( |
114 const base::ListValue* args) { | 114 const base::ListValue* args) { |
115 DCHECK(args->empty()); | 115 DCHECK(args->empty()); |
116 SendAboutInfo(); | 116 SendAboutInfo(); |
117 } | 117 } |
118 | 118 |
119 void SyncInternalsMessageHandler::HandleRequestListOfTypes( | 119 void SyncInternalsMessageHandler::HandleRequestListOfTypes( |
120 const base::ListValue* args) { | 120 const base::ListValue* args) { |
121 DCHECK(args->empty()); | 121 DCHECK(args->empty()); |
122 base::DictionaryValue event_details; | 122 base::DictionaryValue event_details; |
123 std::unique_ptr<base::ListValue> type_list(new base::ListValue()); | 123 std::unique_ptr<base::ListValue> type_list(new base::ListValue()); |
124 ModelTypeSet protocol_types = syncer::ProtocolTypes(); | 124 ModelTypeSet protocol_types = syncer::ProtocolTypes(); |
125 for (ModelTypeSet::Iterator it = protocol_types.First(); it.Good(); | 125 for (ModelTypeSet::Iterator it = protocol_types.First(); it.Good(); |
126 it.Inc()) { | 126 it.Inc()) { |
127 type_list->Append(new base::StringValue(ModelTypeToString(it.Get()))); | 127 type_list->Append(new base::StringValue(ModelTypeToString(it.Get()))); |
128 } | 128 } |
129 event_details.Set(syncer::sync_ui_util::kTypes, type_list.release()); | 129 event_details.Set(sync_driver::sync_ui_util::kTypes, type_list.release()); |
130 web_ui()->CallJavascriptFunction( | 130 web_ui()->CallJavascriptFunction( |
131 syncer::sync_ui_util::kDispatchEvent, | 131 sync_driver::sync_ui_util::kDispatchEvent, |
132 base::StringValue(syncer::sync_ui_util::kOnReceivedListOfTypes), | 132 base::StringValue(sync_driver::sync_ui_util::kOnReceivedListOfTypes), |
133 event_details); | 133 event_details); |
134 } | 134 } |
135 | 135 |
136 void SyncInternalsMessageHandler::HandleGetAllNodes( | 136 void SyncInternalsMessageHandler::HandleGetAllNodes( |
137 const base::ListValue* args) { | 137 const base::ListValue* args) { |
138 DCHECK_EQ(1U, args->GetSize()); | 138 DCHECK_EQ(1U, args->GetSize()); |
139 int request_id = 0; | 139 int request_id = 0; |
140 bool success = args->GetInteger(0, &request_id); | 140 bool success = args->GetInteger(0, &request_id); |
141 DCHECK(success); | 141 DCHECK(success); |
142 | 142 |
143 syncer::SyncService* service = GetSyncService(); | 143 sync_driver::SyncService* service = GetSyncService(); |
144 if (service) { | 144 if (service) { |
145 service->GetAllNodes( | 145 service->GetAllNodes( |
146 base::Bind(&SyncInternalsMessageHandler::OnReceivedAllNodes, | 146 base::Bind(&SyncInternalsMessageHandler::OnReceivedAllNodes, |
147 weak_ptr_factory_.GetWeakPtr(), request_id)); | 147 weak_ptr_factory_.GetWeakPtr(), request_id)); |
148 } | 148 } |
149 } | 149 } |
150 | 150 |
151 void SyncInternalsMessageHandler::OnReceivedAllNodes( | 151 void SyncInternalsMessageHandler::OnReceivedAllNodes( |
152 int request_id, | 152 int request_id, |
153 std::unique_ptr<base::ListValue> nodes) { | 153 std::unique_ptr<base::ListValue> nodes) { |
154 base::FundamentalValue id(request_id); | 154 base::FundamentalValue id(request_id); |
155 web_ui()->CallJavascriptFunction(syncer::sync_ui_util::kGetAllNodesCallback, | 155 web_ui()->CallJavascriptFunction( |
156 id, *nodes); | 156 sync_driver::sync_ui_util::kGetAllNodesCallback, id, *nodes); |
157 } | 157 } |
158 | 158 |
159 void SyncInternalsMessageHandler::OnStateChanged() { | 159 void SyncInternalsMessageHandler::OnStateChanged() { |
160 SendAboutInfo(); | 160 SendAboutInfo(); |
161 } | 161 } |
162 | 162 |
163 void SyncInternalsMessageHandler::OnProtocolEvent( | 163 void SyncInternalsMessageHandler::OnProtocolEvent( |
164 const syncer::ProtocolEvent& event) { | 164 const syncer::ProtocolEvent& event) { |
165 std::unique_ptr<base::DictionaryValue> value( | 165 std::unique_ptr<base::DictionaryValue> value( |
166 syncer::ProtocolEvent::ToValue(event)); | 166 syncer::ProtocolEvent::ToValue(event)); |
167 web_ui()->CallJavascriptFunction( | 167 web_ui()->CallJavascriptFunction( |
168 syncer::sync_ui_util::kDispatchEvent, | 168 sync_driver::sync_ui_util::kDispatchEvent, |
169 base::StringValue(syncer::sync_ui_util::kOnProtocolEvent), *value); | 169 base::StringValue(sync_driver::sync_ui_util::kOnProtocolEvent), *value); |
170 } | 170 } |
171 | 171 |
172 void SyncInternalsMessageHandler::OnCommitCountersUpdated( | 172 void SyncInternalsMessageHandler::OnCommitCountersUpdated( |
173 syncer::ModelType type, | 173 syncer::ModelType type, |
174 const syncer::CommitCounters& counters) { | 174 const syncer::CommitCounters& counters) { |
175 EmitCounterUpdate(type, syncer::sync_ui_util::kCommit, counters.ToValue()); | 175 EmitCounterUpdate(type, sync_driver::sync_ui_util::kCommit, |
| 176 counters.ToValue()); |
176 } | 177 } |
177 | 178 |
178 void SyncInternalsMessageHandler::OnUpdateCountersUpdated( | 179 void SyncInternalsMessageHandler::OnUpdateCountersUpdated( |
179 syncer::ModelType type, | 180 syncer::ModelType type, |
180 const syncer::UpdateCounters& counters) { | 181 const syncer::UpdateCounters& counters) { |
181 EmitCounterUpdate(type, syncer::sync_ui_util::kUpdate, counters.ToValue()); | 182 EmitCounterUpdate(type, sync_driver::sync_ui_util::kUpdate, |
| 183 counters.ToValue()); |
182 } | 184 } |
183 | 185 |
184 void SyncInternalsMessageHandler::OnStatusCountersUpdated( | 186 void SyncInternalsMessageHandler::OnStatusCountersUpdated( |
185 syncer::ModelType type, | 187 syncer::ModelType type, |
186 const syncer::StatusCounters& counters) { | 188 const syncer::StatusCounters& counters) { |
187 EmitCounterUpdate(type, syncer::sync_ui_util::kStatus, counters.ToValue()); | 189 EmitCounterUpdate(type, sync_driver::sync_ui_util::kStatus, |
| 190 counters.ToValue()); |
188 } | 191 } |
189 | 192 |
190 void SyncInternalsMessageHandler::EmitCounterUpdate( | 193 void SyncInternalsMessageHandler::EmitCounterUpdate( |
191 syncer::ModelType type, | 194 syncer::ModelType type, |
192 const std::string& counter_type, | 195 const std::string& counter_type, |
193 std::unique_ptr<base::DictionaryValue> value) { | 196 std::unique_ptr<base::DictionaryValue> value) { |
194 std::unique_ptr<base::DictionaryValue> details(new base::DictionaryValue()); | 197 std::unique_ptr<base::DictionaryValue> details(new base::DictionaryValue()); |
195 details->SetString(syncer::sync_ui_util::kModelType, ModelTypeToString(type)); | 198 details->SetString(sync_driver::sync_ui_util::kModelType, |
196 details->SetString(syncer::sync_ui_util::kCounterType, counter_type); | 199 ModelTypeToString(type)); |
197 details->Set(syncer::sync_ui_util::kCounters, value.release()); | 200 details->SetString(sync_driver::sync_ui_util::kCounterType, counter_type); |
| 201 details->Set(sync_driver::sync_ui_util::kCounters, value.release()); |
198 web_ui()->CallJavascriptFunction( | 202 web_ui()->CallJavascriptFunction( |
199 syncer::sync_ui_util::kDispatchEvent, | 203 sync_driver::sync_ui_util::kDispatchEvent, |
200 base::StringValue(syncer::sync_ui_util::kOnCountersUpdated), *details); | 204 base::StringValue(sync_driver::sync_ui_util::kOnCountersUpdated), |
| 205 *details); |
201 } | 206 } |
202 | 207 |
203 void SyncInternalsMessageHandler::HandleJsEvent(const std::string& name, | 208 void SyncInternalsMessageHandler::HandleJsEvent(const std::string& name, |
204 const JsEventDetails& details) { | 209 const JsEventDetails& details) { |
205 DVLOG(1) << "Handling event: " << name << " with details " | 210 DVLOG(1) << "Handling event: " << name << " with details " |
206 << details.ToString(); | 211 << details.ToString(); |
207 web_ui()->CallJavascriptFunction(syncer::sync_ui_util::kDispatchEvent, | 212 web_ui()->CallJavascriptFunction(sync_driver::sync_ui_util::kDispatchEvent, |
208 base::StringValue(name), details.Get()); | 213 base::StringValue(name), details.Get()); |
209 } | 214 } |
210 | 215 |
211 void SyncInternalsMessageHandler::SendAboutInfo() { | 216 void SyncInternalsMessageHandler::SendAboutInfo() { |
212 ios::ChromeBrowserState* browser_state = | 217 ios::ChromeBrowserState* browser_state = |
213 ios::ChromeBrowserState::FromWebUIIOS(web_ui()); | 218 ios::ChromeBrowserState::FromWebUIIOS(web_ui()); |
214 SigninManager* signin_manager = | 219 SigninManager* signin_manager = |
215 ios::SigninManagerFactory::GetForBrowserState(browser_state); | 220 ios::SigninManagerFactory::GetForBrowserState(browser_state); |
216 syncer::SyncService* sync_service = GetSyncService(); | 221 sync_driver::SyncService* sync_service = GetSyncService(); |
217 std::unique_ptr<base::DictionaryValue> value = | 222 std::unique_ptr<base::DictionaryValue> value = |
218 syncer::sync_ui_util::ConstructAboutInformation( | 223 sync_driver::sync_ui_util::ConstructAboutInformation( |
219 sync_service, signin_manager, GetChannel()); | 224 sync_service, signin_manager, GetChannel()); |
220 web_ui()->CallJavascriptFunction( | 225 web_ui()->CallJavascriptFunction( |
221 syncer::sync_ui_util::kDispatchEvent, | 226 sync_driver::sync_ui_util::kDispatchEvent, |
222 base::StringValue(syncer::sync_ui_util::kOnAboutInfoUpdated), *value); | 227 base::StringValue(sync_driver::sync_ui_util::kOnAboutInfoUpdated), |
| 228 *value); |
223 } | 229 } |
224 | 230 |
225 // Gets the SyncService of the underlying original profile. May return null. | 231 // Gets the SyncService of the underlying original profile. May return null. |
226 syncer::SyncService* SyncInternalsMessageHandler::GetSyncService() { | 232 sync_driver::SyncService* SyncInternalsMessageHandler::GetSyncService() { |
227 ios::ChromeBrowserState* browser_state = | 233 ios::ChromeBrowserState* browser_state = |
228 ios::ChromeBrowserState::FromWebUIIOS(web_ui()); | 234 ios::ChromeBrowserState::FromWebUIIOS(web_ui()); |
229 return IOSChromeProfileSyncServiceFactory::GetForBrowserState( | 235 return IOSChromeProfileSyncServiceFactory::GetForBrowserState( |
230 browser_state->GetOriginalChromeBrowserState()); | 236 browser_state->GetOriginalChromeBrowserState()); |
231 } | 237 } |
OLD | NEW |