OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/ui/webui/sync_internals_message_handler.h" | 5 #include "chrome/browser/ui/webui/sync_internals_message_handler.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
11 #include "chrome/browser/sync/profile_sync_service.h" | 11 #include "chrome/browser/sync/profile_sync_service.h" |
12 #include "chrome/browser/sync/profile_sync_service_factory.h" | 12 #include "chrome/browser/sync/profile_sync_service_factory.h" |
13 #include "chrome/common/channel_info.h" | 13 #include "chrome/common/channel_info.h" |
14 #include "components/sync_driver/about_sync_util.h" | 14 #include "components/sync_driver/about_sync_util.h" |
| 15 #include "components/sync_driver/about_sync_util.h" |
15 #include "content/public/browser/browser_thread.h" | 16 #include "content/public/browser/browser_thread.h" |
16 #include "content/public/browser/web_ui.h" | 17 #include "content/public/browser/web_ui.h" |
17 #include "sync/internal_api/public/events/protocol_event.h" | 18 #include "sync/internal_api/public/events/protocol_event.h" |
18 #include "sync/internal_api/public/sessions/commit_counters.h" | 19 #include "sync/internal_api/public/sessions/commit_counters.h" |
19 #include "sync/internal_api/public/sessions/status_counters.h" | 20 #include "sync/internal_api/public/sessions/status_counters.h" |
20 #include "sync/internal_api/public/sessions/update_counters.h" | 21 #include "sync/internal_api/public/sessions/update_counters.h" |
21 #include "sync/internal_api/public/util/weak_handle.h" | 22 #include "sync/internal_api/public/util/weak_handle.h" |
22 #include "sync/js/js_event_details.h" | 23 #include "sync/js/js_event_details.h" |
23 | 24 |
24 using syncer::JsEventDetails; | 25 using syncer::JsEventDetails; |
(...skipping 18 matching lines...) Expand all Loading... |
43 | 44 |
44 if (service && is_registered_for_counters_) { | 45 if (service && is_registered_for_counters_) { |
45 service->RemoveTypeDebugInfoObserver(this); | 46 service->RemoveTypeDebugInfoObserver(this); |
46 } | 47 } |
47 } | 48 } |
48 | 49 |
49 void SyncInternalsMessageHandler::RegisterMessages() { | 50 void SyncInternalsMessageHandler::RegisterMessages() { |
50 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 51 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
51 | 52 |
52 web_ui()->RegisterMessageCallback( | 53 web_ui()->RegisterMessageCallback( |
53 "registerForEvents", | 54 sync_driver::kRegisterForEvents, |
54 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForEvents, | 55 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForEvents, |
55 base::Unretained(this))); | 56 base::Unretained(this))); |
56 | 57 |
57 web_ui()->RegisterMessageCallback( | 58 web_ui()->RegisterMessageCallback( |
58 "registerForPerTypeCounters", | 59 sync_driver::kRegisterForPerTypeCounters, |
59 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters, | 60 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters, |
60 base::Unretained(this))); | 61 base::Unretained(this))); |
61 | 62 |
62 web_ui()->RegisterMessageCallback( | 63 web_ui()->RegisterMessageCallback( |
63 "requestUpdatedAboutInfo", | 64 sync_driver::kRequestUpdatedAboutInfo, |
64 base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, | 65 base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, |
65 base::Unretained(this))); | 66 base::Unretained(this))); |
66 | 67 |
67 web_ui()->RegisterMessageCallback( | 68 web_ui()->RegisterMessageCallback( |
68 "requestListOfTypes", | 69 sync_driver::kRequestListOfTypes, |
69 base::Bind(&SyncInternalsMessageHandler::HandleRequestListOfTypes, | 70 base::Bind(&SyncInternalsMessageHandler::HandleRequestListOfTypes, |
70 base::Unretained(this))); | 71 base::Unretained(this))); |
71 | 72 |
72 web_ui()->RegisterMessageCallback( | 73 web_ui()->RegisterMessageCallback( |
73 "getAllNodes", | 74 sync_driver::kGetAllNodes, |
74 base::Bind(&SyncInternalsMessageHandler::HandleGetAllNodes, | 75 base::Bind(&SyncInternalsMessageHandler::HandleGetAllNodes, |
75 base::Unretained(this))); | 76 base::Unretained(this))); |
76 } | 77 } |
77 | 78 |
78 void SyncInternalsMessageHandler::HandleRegisterForEvents( | 79 void SyncInternalsMessageHandler::HandleRegisterForEvents( |
79 const base::ListValue* args) { | 80 const base::ListValue* args) { |
80 DCHECK(args->empty()); | 81 DCHECK(args->empty()); |
81 | 82 |
82 // is_registered_ flag protects us from double-registering. This could | 83 // is_registered_ flag protects us from double-registering. This could |
83 // happen on a page refresh, where the JavaScript gets re-run but the | 84 // happen on a page refresh, where the JavaScript gets re-run but the |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 void SyncInternalsMessageHandler::HandleRequestListOfTypes( | 118 void SyncInternalsMessageHandler::HandleRequestListOfTypes( |
118 const base::ListValue* args) { | 119 const base::ListValue* args) { |
119 DCHECK(args->empty()); | 120 DCHECK(args->empty()); |
120 base::DictionaryValue event_details; | 121 base::DictionaryValue event_details; |
121 scoped_ptr<base::ListValue> type_list(new base::ListValue()); | 122 scoped_ptr<base::ListValue> type_list(new base::ListValue()); |
122 ModelTypeSet protocol_types = syncer::ProtocolTypes(); | 123 ModelTypeSet protocol_types = syncer::ProtocolTypes(); |
123 for (ModelTypeSet::Iterator it = protocol_types.First(); | 124 for (ModelTypeSet::Iterator it = protocol_types.First(); |
124 it.Good(); it.Inc()) { | 125 it.Good(); it.Inc()) { |
125 type_list->Append(new base::StringValue(ModelTypeToString(it.Get()))); | 126 type_list->Append(new base::StringValue(ModelTypeToString(it.Get()))); |
126 } | 127 } |
127 event_details.Set("types", type_list.release()); | 128 event_details.Set(sync_driver::kTypes, type_list.release()); |
128 web_ui()->CallJavascriptFunction( | 129 web_ui()->CallJavascriptFunction( |
129 "chrome.sync.dispatchEvent", | 130 sync_driver::kDispatchEvent, |
130 base::StringValue("onReceivedListOfTypes"), | 131 base::StringValue(sync_driver::kOnReceivedListOfTypes), event_details); |
131 event_details); | |
132 } | 132 } |
133 | 133 |
134 void SyncInternalsMessageHandler::HandleGetAllNodes( | 134 void SyncInternalsMessageHandler::HandleGetAllNodes( |
135 const base::ListValue* args) { | 135 const base::ListValue* args) { |
136 DCHECK_EQ(1U, args->GetSize()); | 136 DCHECK_EQ(1U, args->GetSize()); |
137 int request_id = 0; | 137 int request_id = 0; |
138 bool success = args->GetInteger(0, &request_id); | 138 bool success = args->GetInteger(0, &request_id); |
139 DCHECK(success); | 139 DCHECK(success); |
140 | 140 |
141 ProfileSyncService* service = GetProfileSyncService(); | 141 ProfileSyncService* service = GetProfileSyncService(); |
142 if (service) { | 142 if (service) { |
143 service->GetAllNodes( | 143 service->GetAllNodes( |
144 base::Bind(&SyncInternalsMessageHandler::OnReceivedAllNodes, | 144 base::Bind(&SyncInternalsMessageHandler::OnReceivedAllNodes, |
145 weak_ptr_factory_.GetWeakPtr(), request_id)); | 145 weak_ptr_factory_.GetWeakPtr(), request_id)); |
146 } | 146 } |
147 } | 147 } |
148 | 148 |
149 void SyncInternalsMessageHandler::OnReceivedAllNodes( | 149 void SyncInternalsMessageHandler::OnReceivedAllNodes( |
150 int request_id, | 150 int request_id, |
151 scoped_ptr<base::ListValue> nodes) { | 151 scoped_ptr<base::ListValue> nodes) { |
152 base::FundamentalValue id(request_id); | 152 base::FundamentalValue id(request_id); |
153 web_ui()->CallJavascriptFunction("chrome.sync.getAllNodesCallback", | 153 web_ui()->CallJavascriptFunction(sync_driver::kGetAllNodesCallback, id, |
154 id, *nodes); | 154 *nodes); |
155 } | 155 } |
156 | 156 |
157 void SyncInternalsMessageHandler::OnStateChanged() { | 157 void SyncInternalsMessageHandler::OnStateChanged() { |
158 SendAboutInfo(); | 158 SendAboutInfo(); |
159 } | 159 } |
160 | 160 |
161 void SyncInternalsMessageHandler::OnProtocolEvent( | 161 void SyncInternalsMessageHandler::OnProtocolEvent( |
162 const syncer::ProtocolEvent& event) { | 162 const syncer::ProtocolEvent& event) { |
163 scoped_ptr<base::DictionaryValue> value( | 163 scoped_ptr<base::DictionaryValue> value( |
164 syncer::ProtocolEvent::ToValue(event)); | 164 syncer::ProtocolEvent::ToValue(event)); |
165 web_ui()->CallJavascriptFunction( | 165 web_ui()->CallJavascriptFunction( |
166 "chrome.sync.dispatchEvent", | 166 sync_driver::kDispatchEvent, |
167 base::StringValue("onProtocolEvent"), | 167 base::StringValue(sync_driver::kOnProtocolEvent), *value); |
168 *value); | |
169 } | 168 } |
170 | 169 |
171 void SyncInternalsMessageHandler::OnCommitCountersUpdated( | 170 void SyncInternalsMessageHandler::OnCommitCountersUpdated( |
172 syncer::ModelType type, | 171 syncer::ModelType type, |
173 const syncer::CommitCounters& counters) { | 172 const syncer::CommitCounters& counters) { |
174 EmitCounterUpdate(type, "commit", counters.ToValue()); | 173 EmitCounterUpdate(type, sync_driver::kCommit, counters.ToValue()); |
175 } | 174 } |
176 | 175 |
177 void SyncInternalsMessageHandler::OnUpdateCountersUpdated( | 176 void SyncInternalsMessageHandler::OnUpdateCountersUpdated( |
178 syncer::ModelType type, | 177 syncer::ModelType type, |
179 const syncer::UpdateCounters& counters) { | 178 const syncer::UpdateCounters& counters) { |
180 EmitCounterUpdate(type, "update", counters.ToValue()); | 179 EmitCounterUpdate(type, sync_driver::kUpdate, counters.ToValue()); |
181 } | 180 } |
182 | 181 |
183 void SyncInternalsMessageHandler::OnStatusCountersUpdated( | 182 void SyncInternalsMessageHandler::OnStatusCountersUpdated( |
184 syncer::ModelType type, | 183 syncer::ModelType type, |
185 const syncer::StatusCounters& counters) { | 184 const syncer::StatusCounters& counters) { |
186 EmitCounterUpdate(type, "status", counters.ToValue()); | 185 EmitCounterUpdate(type, sync_driver::kStatus, counters.ToValue()); |
187 } | 186 } |
188 | 187 |
189 void SyncInternalsMessageHandler::EmitCounterUpdate( | 188 void SyncInternalsMessageHandler::EmitCounterUpdate( |
190 syncer::ModelType type, | 189 syncer::ModelType type, |
191 const std::string& counter_type, | 190 const std::string& counter_type, |
192 scoped_ptr<base::DictionaryValue> value) { | 191 scoped_ptr<base::DictionaryValue> value) { |
193 scoped_ptr<base::DictionaryValue> details(new base::DictionaryValue()); | 192 scoped_ptr<base::DictionaryValue> details(new base::DictionaryValue()); |
194 details->SetString("modelType", ModelTypeToString(type)); | 193 details->SetString(sync_driver::kModelType, ModelTypeToString(type)); |
195 details->SetString("counterType", counter_type); | 194 details->SetString(sync_driver::kCounterType, counter_type); |
196 details->Set("counters", value.release()); | 195 details->Set(sync_driver::kCounters, value.release()); |
197 web_ui()->CallJavascriptFunction("chrome.sync.dispatchEvent", | 196 web_ui()->CallJavascriptFunction( |
198 base::StringValue("onCountersUpdated"), | 197 sync_driver::kDispatchEvent, |
199 *details); | 198 base::StringValue(sync_driver::kOnCountersUpdated), *details); |
200 } | 199 } |
201 | 200 |
202 void SyncInternalsMessageHandler::HandleJsEvent( | 201 void SyncInternalsMessageHandler::HandleJsEvent( |
203 const std::string& name, | 202 const std::string& name, |
204 const JsEventDetails& details) { | 203 const JsEventDetails& details) { |
205 DVLOG(1) << "Handling event: " << name | 204 DVLOG(1) << "Handling event: " << name |
206 << " with details " << details.ToString(); | 205 << " with details " << details.ToString(); |
207 web_ui()->CallJavascriptFunction("chrome.sync.dispatchEvent", | 206 web_ui()->CallJavascriptFunction(sync_driver::kDispatchEvent, |
208 base::StringValue(name), | 207 base::StringValue(name), details.Get()); |
209 details.Get()); | |
210 } | 208 } |
211 | 209 |
212 void SyncInternalsMessageHandler::SendAboutInfo() { | 210 void SyncInternalsMessageHandler::SendAboutInfo() { |
213 ProfileSyncService* sync_service = GetProfileSyncService(); | 211 ProfileSyncService* sync_service = GetProfileSyncService(); |
214 scoped_ptr<base::DictionaryValue> value = | 212 scoped_ptr<base::DictionaryValue> value = |
215 sync_ui_util::ConstructAboutInformation(sync_service, | 213 sync_driver::ConstructAboutInformation( |
216 sync_service->signin(), | 214 sync_service, sync_service->signin(), chrome::GetChannel()); |
217 chrome::GetChannel()); | |
218 web_ui()->CallJavascriptFunction( | 215 web_ui()->CallJavascriptFunction( |
219 "chrome.sync.dispatchEvent", | 216 sync_driver::kDispatchEvent, |
220 base::StringValue("onAboutInfoUpdated"), | 217 base::StringValue(sync_driver::kOnAboutInfoUpdated), *value); |
221 *value); | |
222 } | 218 } |
223 | 219 |
224 // Gets the ProfileSyncService of the underlying original profile. | 220 // Gets the ProfileSyncService of the underlying original profile. |
225 // May return NULL (e.g., if sync is disabled on the command line). | 221 // May return NULL (e.g., if sync is disabled on the command line). |
226 ProfileSyncService* SyncInternalsMessageHandler::GetProfileSyncService() { | 222 ProfileSyncService* SyncInternalsMessageHandler::GetProfileSyncService() { |
227 Profile* profile = Profile::FromWebUI(web_ui()); | 223 Profile* profile = Profile::FromWebUI(web_ui()); |
228 return ProfileSyncServiceFactory::GetForProfile( | 224 return ProfileSyncServiceFactory::GetForProfile( |
229 profile->GetOriginalProfile()); | 225 profile->GetOriginalProfile()); |
230 } | 226 } |
OLD | NEW |