| 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 <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 | 27 |
| 28 using browser_sync::ProfileSyncService; | 28 using browser_sync::ProfileSyncService; |
| 29 using syncer::JsEventDetails; | 29 using syncer::JsEventDetails; |
| 30 using syncer::ModelTypeSet; | 30 using syncer::ModelTypeSet; |
| 31 using syncer::WeakHandle; | 31 using syncer::WeakHandle; |
| 32 | 32 |
| 33 namespace { | 33 namespace { |
| 34 class UtilAboutSyncDataExtractor : public AboutSyncDataExtractor { | 34 class UtilAboutSyncDataExtractor : public AboutSyncDataExtractor { |
| 35 public: | 35 public: |
| 36 std::unique_ptr<base::DictionaryValue> ConstructAboutInformation( | 36 std::unique_ptr<base::DictionaryValue> ConstructAboutInformation( |
| 37 syncer::SyncService* service, | 37 sync_driver::SyncService* service, |
| 38 SigninManagerBase* signin) override { | 38 SigninManagerBase* signin) override { |
| 39 return syncer::sync_ui_util::ConstructAboutInformation( | 39 return sync_driver::sync_ui_util::ConstructAboutInformation( |
| 40 service, signin, chrome::GetChannel()); | 40 service, signin, chrome::GetChannel()); |
| 41 } | 41 } |
| 42 }; | 42 }; |
| 43 } // namespace | 43 } // namespace |
| 44 | 44 |
| 45 SyncInternalsMessageHandler::SyncInternalsMessageHandler() | 45 SyncInternalsMessageHandler::SyncInternalsMessageHandler() |
| 46 : SyncInternalsMessageHandler( | 46 : SyncInternalsMessageHandler( |
| 47 base::MakeUnique<UtilAboutSyncDataExtractor>()) {} | 47 base::MakeUnique<UtilAboutSyncDataExtractor>()) {} |
| 48 | 48 |
| 49 SyncInternalsMessageHandler::SyncInternalsMessageHandler( | 49 SyncInternalsMessageHandler::SyncInternalsMessageHandler( |
| (...skipping 13 matching lines...) Expand all Loading... |
| 63 | 63 |
| 64 if (service && is_registered_for_counters_) { | 64 if (service && is_registered_for_counters_) { |
| 65 service->RemoveTypeDebugInfoObserver(this); | 65 service->RemoveTypeDebugInfoObserver(this); |
| 66 } | 66 } |
| 67 } | 67 } |
| 68 | 68 |
| 69 void SyncInternalsMessageHandler::RegisterMessages() { | 69 void SyncInternalsMessageHandler::RegisterMessages() { |
| 70 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 70 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 71 | 71 |
| 72 web_ui()->RegisterMessageCallback( | 72 web_ui()->RegisterMessageCallback( |
| 73 syncer::sync_ui_util::kRegisterForEvents, | 73 sync_driver::sync_ui_util::kRegisterForEvents, |
| 74 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForEvents, | 74 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForEvents, |
| 75 base::Unretained(this))); | 75 base::Unretained(this))); |
| 76 | 76 |
| 77 web_ui()->RegisterMessageCallback( | 77 web_ui()->RegisterMessageCallback( |
| 78 syncer::sync_ui_util::kRegisterForPerTypeCounters, | 78 sync_driver::sync_ui_util::kRegisterForPerTypeCounters, |
| 79 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters, | 79 base::Bind(&SyncInternalsMessageHandler::HandleRegisterForPerTypeCounters, |
| 80 base::Unretained(this))); | 80 base::Unretained(this))); |
| 81 | 81 |
| 82 web_ui()->RegisterMessageCallback( | 82 web_ui()->RegisterMessageCallback( |
| 83 syncer::sync_ui_util::kRequestUpdatedAboutInfo, | 83 sync_driver::sync_ui_util::kRequestUpdatedAboutInfo, |
| 84 base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, | 84 base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, |
| 85 base::Unretained(this))); | 85 base::Unretained(this))); |
| 86 | 86 |
| 87 web_ui()->RegisterMessageCallback( | 87 web_ui()->RegisterMessageCallback( |
| 88 syncer::sync_ui_util::kRequestListOfTypes, | 88 sync_driver::sync_ui_util::kRequestListOfTypes, |
| 89 base::Bind(&SyncInternalsMessageHandler::HandleRequestListOfTypes, | 89 base::Bind(&SyncInternalsMessageHandler::HandleRequestListOfTypes, |
| 90 base::Unretained(this))); | 90 base::Unretained(this))); |
| 91 | 91 |
| 92 web_ui()->RegisterMessageCallback( | 92 web_ui()->RegisterMessageCallback( |
| 93 syncer::sync_ui_util::kGetAllNodes, | 93 sync_driver::sync_ui_util::kGetAllNodes, |
| 94 base::Bind(&SyncInternalsMessageHandler::HandleGetAllNodes, | 94 base::Bind(&SyncInternalsMessageHandler::HandleGetAllNodes, |
| 95 base::Unretained(this))); | 95 base::Unretained(this))); |
| 96 } | 96 } |
| 97 | 97 |
| 98 void SyncInternalsMessageHandler::HandleRegisterForEvents( | 98 void SyncInternalsMessageHandler::HandleRegisterForEvents( |
| 99 const base::ListValue* args) { | 99 const base::ListValue* args) { |
| 100 DCHECK(args->empty()); | 100 DCHECK(args->empty()); |
| 101 | 101 |
| 102 // is_registered_ flag protects us from double-registering. This could | 102 // is_registered_ flag protects us from double-registering. This could |
| 103 // happen on a page refresh, where the JavaScript gets re-run but the | 103 // 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... |
| 137 void SyncInternalsMessageHandler::HandleRequestListOfTypes( | 137 void SyncInternalsMessageHandler::HandleRequestListOfTypes( |
| 138 const base::ListValue* args) { | 138 const base::ListValue* args) { |
| 139 DCHECK(args->empty()); | 139 DCHECK(args->empty()); |
| 140 base::DictionaryValue event_details; | 140 base::DictionaryValue event_details; |
| 141 std::unique_ptr<base::ListValue> type_list(new base::ListValue()); | 141 std::unique_ptr<base::ListValue> type_list(new base::ListValue()); |
| 142 ModelTypeSet protocol_types = syncer::ProtocolTypes(); | 142 ModelTypeSet protocol_types = syncer::ProtocolTypes(); |
| 143 for (ModelTypeSet::Iterator it = protocol_types.First(); | 143 for (ModelTypeSet::Iterator it = protocol_types.First(); |
| 144 it.Good(); it.Inc()) { | 144 it.Good(); it.Inc()) { |
| 145 type_list->AppendString(ModelTypeToString(it.Get())); | 145 type_list->AppendString(ModelTypeToString(it.Get())); |
| 146 } | 146 } |
| 147 event_details.Set(syncer::sync_ui_util::kTypes, type_list.release()); | 147 event_details.Set(sync_driver::sync_ui_util::kTypes, type_list.release()); |
| 148 web_ui()->CallJavascriptFunctionUnsafe( | 148 web_ui()->CallJavascriptFunctionUnsafe( |
| 149 syncer::sync_ui_util::kDispatchEvent, | 149 sync_driver::sync_ui_util::kDispatchEvent, |
| 150 base::StringValue(syncer::sync_ui_util::kOnReceivedListOfTypes), | 150 base::StringValue(sync_driver::sync_ui_util::kOnReceivedListOfTypes), |
| 151 event_details); | 151 event_details); |
| 152 } | 152 } |
| 153 | 153 |
| 154 void SyncInternalsMessageHandler::HandleGetAllNodes( | 154 void SyncInternalsMessageHandler::HandleGetAllNodes( |
| 155 const base::ListValue* args) { | 155 const base::ListValue* args) { |
| 156 DCHECK_EQ(1U, args->GetSize()); | 156 DCHECK_EQ(1U, args->GetSize()); |
| 157 int request_id = 0; | 157 int request_id = 0; |
| 158 bool success = args->GetInteger(0, &request_id); | 158 bool success = args->GetInteger(0, &request_id); |
| 159 DCHECK(success); | 159 DCHECK(success); |
| 160 | 160 |
| 161 ProfileSyncService* service = GetProfileSyncService(); | 161 ProfileSyncService* service = GetProfileSyncService(); |
| 162 if (service) { | 162 if (service) { |
| 163 service->GetAllNodes( | 163 service->GetAllNodes( |
| 164 base::Bind(&SyncInternalsMessageHandler::OnReceivedAllNodes, | 164 base::Bind(&SyncInternalsMessageHandler::OnReceivedAllNodes, |
| 165 weak_ptr_factory_.GetWeakPtr(), request_id)); | 165 weak_ptr_factory_.GetWeakPtr(), request_id)); |
| 166 } | 166 } |
| 167 } | 167 } |
| 168 | 168 |
| 169 void SyncInternalsMessageHandler::OnReceivedAllNodes( | 169 void SyncInternalsMessageHandler::OnReceivedAllNodes( |
| 170 int request_id, | 170 int request_id, |
| 171 std::unique_ptr<base::ListValue> nodes) { | 171 std::unique_ptr<base::ListValue> nodes) { |
| 172 base::FundamentalValue id(request_id); | 172 base::FundamentalValue id(request_id); |
| 173 web_ui()->CallJavascriptFunctionUnsafe( | 173 web_ui()->CallJavascriptFunctionUnsafe( |
| 174 syncer::sync_ui_util::kGetAllNodesCallback, id, *nodes); | 174 sync_driver::sync_ui_util::kGetAllNodesCallback, id, *nodes); |
| 175 } | 175 } |
| 176 | 176 |
| 177 void SyncInternalsMessageHandler::OnStateChanged() { | 177 void SyncInternalsMessageHandler::OnStateChanged() { |
| 178 SendAboutInfo(); | 178 SendAboutInfo(); |
| 179 } | 179 } |
| 180 | 180 |
| 181 void SyncInternalsMessageHandler::OnProtocolEvent( | 181 void SyncInternalsMessageHandler::OnProtocolEvent( |
| 182 const syncer::ProtocolEvent& event) { | 182 const syncer::ProtocolEvent& event) { |
| 183 std::unique_ptr<base::DictionaryValue> value( | 183 std::unique_ptr<base::DictionaryValue> value( |
| 184 syncer::ProtocolEvent::ToValue(event)); | 184 syncer::ProtocolEvent::ToValue(event)); |
| 185 web_ui()->CallJavascriptFunctionUnsafe( | 185 web_ui()->CallJavascriptFunctionUnsafe( |
| 186 syncer::sync_ui_util::kDispatchEvent, | 186 sync_driver::sync_ui_util::kDispatchEvent, |
| 187 base::StringValue(syncer::sync_ui_util::kOnProtocolEvent), *value); | 187 base::StringValue(sync_driver::sync_ui_util::kOnProtocolEvent), *value); |
| 188 } | 188 } |
| 189 | 189 |
| 190 void SyncInternalsMessageHandler::OnCommitCountersUpdated( | 190 void SyncInternalsMessageHandler::OnCommitCountersUpdated( |
| 191 syncer::ModelType type, | 191 syncer::ModelType type, |
| 192 const syncer::CommitCounters& counters) { | 192 const syncer::CommitCounters& counters) { |
| 193 EmitCounterUpdate(type, syncer::sync_ui_util::kCommit, counters.ToValue()); | 193 EmitCounterUpdate(type, sync_driver::sync_ui_util::kCommit, |
| 194 counters.ToValue()); |
| 194 } | 195 } |
| 195 | 196 |
| 196 void SyncInternalsMessageHandler::OnUpdateCountersUpdated( | 197 void SyncInternalsMessageHandler::OnUpdateCountersUpdated( |
| 197 syncer::ModelType type, | 198 syncer::ModelType type, |
| 198 const syncer::UpdateCounters& counters) { | 199 const syncer::UpdateCounters& counters) { |
| 199 EmitCounterUpdate(type, syncer::sync_ui_util::kUpdate, counters.ToValue()); | 200 EmitCounterUpdate(type, sync_driver::sync_ui_util::kUpdate, |
| 201 counters.ToValue()); |
| 200 } | 202 } |
| 201 | 203 |
| 202 void SyncInternalsMessageHandler::OnStatusCountersUpdated( | 204 void SyncInternalsMessageHandler::OnStatusCountersUpdated( |
| 203 syncer::ModelType type, | 205 syncer::ModelType type, |
| 204 const syncer::StatusCounters& counters) { | 206 const syncer::StatusCounters& counters) { |
| 205 EmitCounterUpdate(type, syncer::sync_ui_util::kStatus, counters.ToValue()); | 207 EmitCounterUpdate(type, sync_driver::sync_ui_util::kStatus, |
| 208 counters.ToValue()); |
| 206 } | 209 } |
| 207 | 210 |
| 208 void SyncInternalsMessageHandler::EmitCounterUpdate( | 211 void SyncInternalsMessageHandler::EmitCounterUpdate( |
| 209 syncer::ModelType type, | 212 syncer::ModelType type, |
| 210 const std::string& counter_type, | 213 const std::string& counter_type, |
| 211 std::unique_ptr<base::DictionaryValue> value) { | 214 std::unique_ptr<base::DictionaryValue> value) { |
| 212 std::unique_ptr<base::DictionaryValue> details(new base::DictionaryValue()); | 215 std::unique_ptr<base::DictionaryValue> details(new base::DictionaryValue()); |
| 213 details->SetString(syncer::sync_ui_util::kModelType, ModelTypeToString(type)); | 216 details->SetString(sync_driver::sync_ui_util::kModelType, |
| 214 details->SetString(syncer::sync_ui_util::kCounterType, counter_type); | 217 ModelTypeToString(type)); |
| 215 details->Set(syncer::sync_ui_util::kCounters, value.release()); | 218 details->SetString(sync_driver::sync_ui_util::kCounterType, counter_type); |
| 219 details->Set(sync_driver::sync_ui_util::kCounters, value.release()); |
| 216 web_ui()->CallJavascriptFunctionUnsafe( | 220 web_ui()->CallJavascriptFunctionUnsafe( |
| 217 syncer::sync_ui_util::kDispatchEvent, | 221 sync_driver::sync_ui_util::kDispatchEvent, |
| 218 base::StringValue(syncer::sync_ui_util::kOnCountersUpdated), *details); | 222 base::StringValue(sync_driver::sync_ui_util::kOnCountersUpdated), |
| 223 *details); |
| 219 } | 224 } |
| 220 | 225 |
| 221 void SyncInternalsMessageHandler::HandleJsEvent( | 226 void SyncInternalsMessageHandler::HandleJsEvent( |
| 222 const std::string& name, | 227 const std::string& name, |
| 223 const JsEventDetails& details) { | 228 const JsEventDetails& details) { |
| 224 DVLOG(1) << "Handling event: " << name | 229 DVLOG(1) << "Handling event: " << name |
| 225 << " with details " << details.ToString(); | 230 << " with details " << details.ToString(); |
| 226 web_ui()->CallJavascriptFunctionUnsafe(syncer::sync_ui_util::kDispatchEvent, | 231 web_ui()->CallJavascriptFunctionUnsafe( |
| 227 base::StringValue(name), | 232 sync_driver::sync_ui_util::kDispatchEvent, base::StringValue(name), |
| 228 details.Get()); | 233 details.Get()); |
| 229 } | 234 } |
| 230 | 235 |
| 231 void SyncInternalsMessageHandler::SendAboutInfo() { | 236 void SyncInternalsMessageHandler::SendAboutInfo() { |
| 232 ProfileSyncService* sync_service = GetProfileSyncService(); | 237 ProfileSyncService* sync_service = GetProfileSyncService(); |
| 233 SigninManagerBase* signin = sync_service ? sync_service->signin() : nullptr; | 238 SigninManagerBase* signin = sync_service ? sync_service->signin() : nullptr; |
| 234 std::unique_ptr<base::DictionaryValue> value = | 239 std::unique_ptr<base::DictionaryValue> value = |
| 235 about_sync_data_extractor_->ConstructAboutInformation(sync_service, | 240 about_sync_data_extractor_->ConstructAboutInformation(sync_service, |
| 236 signin); | 241 signin); |
| 237 web_ui()->CallJavascriptFunctionUnsafe( | 242 web_ui()->CallJavascriptFunctionUnsafe( |
| 238 syncer::sync_ui_util::kDispatchEvent, | 243 sync_driver::sync_ui_util::kDispatchEvent, |
| 239 base::StringValue(syncer::sync_ui_util::kOnAboutInfoUpdated), *value); | 244 base::StringValue(sync_driver::sync_ui_util::kOnAboutInfoUpdated), |
| 245 *value); |
| 240 } | 246 } |
| 241 | 247 |
| 242 // Gets the ProfileSyncService of the underlying original profile. | 248 // Gets the ProfileSyncService of the underlying original profile. |
| 243 // May return NULL (e.g., if sync is disabled on the command line). | 249 // May return NULL (e.g., if sync is disabled on the command line). |
| 244 ProfileSyncService* SyncInternalsMessageHandler::GetProfileSyncService() { | 250 ProfileSyncService* SyncInternalsMessageHandler::GetProfileSyncService() { |
| 245 Profile* profile = Profile::FromWebUI(web_ui()); | 251 Profile* profile = Profile::FromWebUI(web_ui()); |
| 246 return ProfileSyncServiceFactory::GetForProfile( | 252 return ProfileSyncServiceFactory::GetForProfile( |
| 247 profile->GetOriginalProfile()); | 253 profile->GetOriginalProfile()); |
| 248 } | 254 } |
| OLD | NEW |