| Index: chrome/browser/ui/webui/sync_internals_message_handler.cc
|
| diff --git a/chrome/browser/ui/webui/sync_internals_message_handler.cc b/chrome/browser/ui/webui/sync_internals_message_handler.cc
|
| index ecd38eb94f842d4560b457c28b8da54731e1de50..59f6cd5ae8b68714dfc778bdc9c9393878b2b96a 100644
|
| --- a/chrome/browser/ui/webui/sync_internals_message_handler.cc
|
| +++ b/chrome/browser/ui/webui/sync_internals_message_handler.cc
|
| @@ -34,21 +34,22 @@ SyncInternalsMessageHandler::~SyncInternalsMessageHandler() {
|
| void SyncInternalsMessageHandler::RegisterMessages() {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
|
|
| - // Init our link to the JsController.
|
| + // Register for ProfileSyncService events.
|
| ProfileSyncService* service = GetProfileSyncService();
|
| - if (service)
|
| + if (service) {
|
| + service->AddObserver(this);
|
| js_controller_ = service->GetJsController();
|
| - if (js_controller_)
|
| js_controller_->AddJsEventHandler(this);
|
| + }
|
|
|
| web_ui()->RegisterMessageCallback(
|
| - "getAboutInfo",
|
| - base::Bind(&SyncInternalsMessageHandler::OnGetAboutInfo,
|
| + "requestUpdatedAboutInfo",
|
| + base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo,
|
| base::Unretained(this)));
|
|
|
| web_ui()->RegisterMessageCallback(
|
| - "getListOfTypes",
|
| - base::Bind(&SyncInternalsMessageHandler::OnGetListOfTypes,
|
| + "requestListOfTypes",
|
| + base::Bind(&SyncInternalsMessageHandler::HandleRequestListOfTypes,
|
| base::Unretained(this)));
|
|
|
| RegisterJsControllerCallback("getNotificationState");
|
| @@ -57,27 +58,27 @@ void SyncInternalsMessageHandler::RegisterMessages() {
|
| RegisterJsControllerCallback("getClientServerTraffic");
|
| }
|
|
|
| -void SyncInternalsMessageHandler::OnGetAboutInfo(const base::ListValue* args) {
|
| - // TODO(rlarocque): We should DCHECK(!args) here. See crbug.com/334431.
|
| - scoped_ptr<base::DictionaryValue> value =
|
| - sync_ui_util::ConstructAboutInformation(GetProfileSyncService());
|
| - web_ui()->CallJavascriptFunction(
|
| - "chrome.sync.getAboutInfo.handleReply",
|
| - *value);
|
| +void SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo(
|
| + const base::ListValue* args) {
|
| + DCHECK(args->empty());
|
| + SendAboutInfo();
|
| }
|
|
|
| -void SyncInternalsMessageHandler::OnGetListOfTypes(
|
| +void SyncInternalsMessageHandler::HandleRequestListOfTypes(
|
| const base::ListValue* args) {
|
| - // TODO(rlarocque): We should DCHECK(!args) here. See crbug.com/334431.
|
| - base::ListValue type_list;
|
| + DCHECK(args->empty());
|
| + base::DictionaryValue event_details;
|
| + scoped_ptr<base::ListValue> type_list(new base::ListValue());
|
| ModelTypeSet protocol_types = syncer::ProtocolTypes();
|
| for (ModelTypeSet::Iterator it = protocol_types.First();
|
| it.Good(); it.Inc()) {
|
| - type_list.Append(new base::StringValue(ModelTypeToString(it.Get())));
|
| + type_list->Append(new base::StringValue(ModelTypeToString(it.Get())));
|
| }
|
| + event_details.Set("types", type_list.release());
|
| web_ui()->CallJavascriptFunction(
|
| - "chrome.sync.getListOfTypes.handleReply",
|
| - type_list);
|
| + "chrome.sync.dispatchEvent",
|
| + base::StringValue("onReceivedListOfTypes"),
|
| + event_details);
|
| }
|
|
|
| void SyncInternalsMessageHandler::HandleJsReply(
|
| @@ -90,6 +91,10 @@ void SyncInternalsMessageHandler::HandleJsReply(
|
| web_ui()->CallJavascriptFunction(reply_handler, arg_list);
|
| }
|
|
|
| +void SyncInternalsMessageHandler::OnStateChanged() {
|
| + SendAboutInfo();
|
| +}
|
| +
|
| void SyncInternalsMessageHandler::HandleJsEvent(
|
| const std::string& name,
|
| const JsEventDetails& details) {
|
| @@ -109,6 +114,15 @@ void SyncInternalsMessageHandler::RegisterJsControllerCallback(
|
| name));
|
| }
|
|
|
| +void SyncInternalsMessageHandler::SendAboutInfo() {
|
| + scoped_ptr<base::DictionaryValue> value =
|
| + sync_ui_util::ConstructAboutInformation(GetProfileSyncService());
|
| + web_ui()->CallJavascriptFunction(
|
| + "chrome.sync.dispatchEvent",
|
| + base::StringValue("onAboutInfoUpdated"),
|
| + *value);
|
| +}
|
| +
|
| void SyncInternalsMessageHandler::ForwardToJsController(
|
| const std::string& name,
|
| const base::ListValue* args) {
|
|
|