Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3480)

Unified Diff: chrome/browser/ui/webui/sync_internals_message_handler.cc

Issue 210233005: sync: Display protocol events on about:sync (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nit + unrelated bug Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/sync_internals_message_handler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8a0ddd66a54707add0f73065f481739016369e3b..e0b64f9bf081ee10a2ee0ae98086bcf11b3dab83 100644
--- a/chrome/browser/ui/webui/sync_internals_message_handler.cc
+++ b/chrome/browser/ui/webui/sync_internals_message_handler.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_ui.h"
+#include "sync/internal_api/public/events/protocol_event.h"
#include "sync/internal_api/public/util/weak_handle.h"
#include "sync/js/js_arg_list.h"
#include "sync/js/js_event_details.h"
@@ -24,12 +25,17 @@ using syncer::ModelTypeSet;
using syncer::WeakHandle;
SyncInternalsMessageHandler::SyncInternalsMessageHandler()
- : scoped_observer_(this),
- weak_ptr_factory_(this) {}
+ : weak_ptr_factory_(this) {}
SyncInternalsMessageHandler::~SyncInternalsMessageHandler() {
if (js_controller_)
js_controller_->RemoveJsEventHandler(this);
+
+ ProfileSyncService* service = GetProfileSyncService();
+ if (service && service->HasObserver(this)) {
+ service->RemoveObserver(this);
+ service->RemoveProtocolEventObserver(this);
+ }
}
void SyncInternalsMessageHandler::RegisterMessages() {
@@ -38,7 +44,8 @@ void SyncInternalsMessageHandler::RegisterMessages() {
// Register for ProfileSyncService events.
ProfileSyncService* service = GetProfileSyncService();
if (service) {
- scoped_observer_.Add(service);
+ service->AddObserver(this);
+ service->AddProtocolEventObserver(this);
js_controller_ = service->GetJsController();
js_controller_->AddJsEventHandler(this);
}
@@ -94,6 +101,16 @@ void SyncInternalsMessageHandler::OnStateChanged() {
SendAboutInfo();
}
+void SyncInternalsMessageHandler::OnProtocolEvent(
+ const syncer::ProtocolEvent& event) {
+ scoped_ptr<base::DictionaryValue> value(
+ syncer::ProtocolEvent::ToValue(event));
+ web_ui()->CallJavascriptFunction(
+ "chrome.sync.dispatchEvent",
+ base::StringValue("onProtocolEvent"),
+ *value);
+}
+
void SyncInternalsMessageHandler::HandleJsEvent(
const std::string& name,
const JsEventDetails& details) {
« no previous file with comments | « chrome/browser/ui/webui/sync_internals_message_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698