| 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/about_sync_util.h" |   11 #include "chrome/browser/sync/about_sync_util.h" | 
|   12 #include "chrome/browser/sync/profile_sync_service.h" |   12 #include "chrome/browser/sync/profile_sync_service.h" | 
|   13 #include "chrome/browser/sync/profile_sync_service_factory.h" |   13 #include "chrome/browser/sync/profile_sync_service_factory.h" | 
|   14 #include "content/public/browser/browser_thread.h" |   14 #include "content/public/browser/browser_thread.h" | 
|   15 #include "content/public/browser/web_ui.h" |   15 #include "content/public/browser/web_ui.h" | 
 |   16 #include "sync/internal_api/public/events/protocol_event.h" | 
|   16 #include "sync/internal_api/public/util/weak_handle.h" |   17 #include "sync/internal_api/public/util/weak_handle.h" | 
|   17 #include "sync/js/js_arg_list.h" |   18 #include "sync/js/js_arg_list.h" | 
|   18 #include "sync/js/js_event_details.h" |   19 #include "sync/js/js_event_details.h" | 
|   19  |   20  | 
|   20 using syncer::JsArgList; |   21 using syncer::JsArgList; | 
|   21 using syncer::JsEventDetails; |   22 using syncer::JsEventDetails; | 
|   22 using syncer::JsReplyHandler; |   23 using syncer::JsReplyHandler; | 
|   23 using syncer::ModelTypeSet; |   24 using syncer::ModelTypeSet; | 
|   24 using syncer::WeakHandle; |   25 using syncer::WeakHandle; | 
|   25  |   26  | 
|   26 SyncInternalsMessageHandler::SyncInternalsMessageHandler() |   27 SyncInternalsMessageHandler::SyncInternalsMessageHandler() | 
|   27     : scoped_observer_(this), |   28     : weak_ptr_factory_(this) {} | 
|   28       weak_ptr_factory_(this) {} |  | 
|   29  |   29  | 
|   30 SyncInternalsMessageHandler::~SyncInternalsMessageHandler() { |   30 SyncInternalsMessageHandler::~SyncInternalsMessageHandler() { | 
|   31   if (js_controller_) |   31   if (js_controller_) | 
|   32     js_controller_->RemoveJsEventHandler(this); |   32     js_controller_->RemoveJsEventHandler(this); | 
 |   33  | 
 |   34   ProfileSyncService* service = GetProfileSyncService(); | 
 |   35   if (service && service->HasObserver(this)) { | 
 |   36     service->RemoveObserver(this); | 
 |   37     service->RemoveProtocolEventObserver(this); | 
 |   38   } | 
|   33 } |   39 } | 
|   34  |   40  | 
|   35 void SyncInternalsMessageHandler::RegisterMessages() { |   41 void SyncInternalsMessageHandler::RegisterMessages() { | 
|   36   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |   42   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 
|   37  |   43  | 
|   38   // Register for ProfileSyncService events. |   44   // Register for ProfileSyncService events. | 
|   39   ProfileSyncService* service = GetProfileSyncService(); |   45   ProfileSyncService* service = GetProfileSyncService(); | 
|   40   if (service) { |   46   if (service) { | 
|   41     scoped_observer_.Add(service); |   47     service->AddObserver(this); | 
 |   48     service->AddProtocolEventObserver(this); | 
|   42     js_controller_ = service->GetJsController(); |   49     js_controller_ = service->GetJsController(); | 
|   43     js_controller_->AddJsEventHandler(this); |   50     js_controller_->AddJsEventHandler(this); | 
|   44   } |   51   } | 
|   45  |   52  | 
|   46   web_ui()->RegisterMessageCallback( |   53   web_ui()->RegisterMessageCallback( | 
|   47       "requestUpdatedAboutInfo", |   54       "requestUpdatedAboutInfo", | 
|   48       base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, |   55       base::Bind(&SyncInternalsMessageHandler::HandleRequestUpdatedAboutInfo, | 
|   49                  base::Unretained(this))); |   56                  base::Unretained(this))); | 
|   50  |   57  | 
|   51   web_ui()->RegisterMessageCallback( |   58   web_ui()->RegisterMessageCallback( | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   87   const std::string& reply_handler = "chrome.sync." + name + ".handleReply"; |   94   const std::string& reply_handler = "chrome.sync." + name + ".handleReply"; | 
|   88   std::vector<const base::Value*> arg_list(args.Get().begin(), |   95   std::vector<const base::Value*> arg_list(args.Get().begin(), | 
|   89                                            args.Get().end()); |   96                                            args.Get().end()); | 
|   90   web_ui()->CallJavascriptFunction(reply_handler, arg_list); |   97   web_ui()->CallJavascriptFunction(reply_handler, arg_list); | 
|   91 } |   98 } | 
|   92  |   99  | 
|   93 void SyncInternalsMessageHandler::OnStateChanged() { |  100 void SyncInternalsMessageHandler::OnStateChanged() { | 
|   94   SendAboutInfo(); |  101   SendAboutInfo(); | 
|   95 } |  102 } | 
|   96  |  103  | 
 |  104 void SyncInternalsMessageHandler::OnProtocolEvent( | 
 |  105     const syncer::ProtocolEvent& event) { | 
 |  106   scoped_ptr<base::DictionaryValue> value( | 
 |  107       syncer::ProtocolEvent::ToValue(event)); | 
 |  108   web_ui()->CallJavascriptFunction( | 
 |  109       "chrome.sync.dispatchEvent", | 
 |  110       base::StringValue("onProtocolEvent"), | 
 |  111       *value); | 
 |  112 } | 
 |  113  | 
|   97 void SyncInternalsMessageHandler::HandleJsEvent( |  114 void SyncInternalsMessageHandler::HandleJsEvent( | 
|   98     const std::string& name, |  115     const std::string& name, | 
|   99     const JsEventDetails& details) { |  116     const JsEventDetails& details) { | 
|  100   DVLOG(1) << "Handling event: " << name |  117   DVLOG(1) << "Handling event: " << name | 
|  101            << " with details " << details.ToString(); |  118            << " with details " << details.ToString(); | 
|  102   web_ui()->CallJavascriptFunction("chrome.sync.dispatchEvent", |  119   web_ui()->CallJavascriptFunction("chrome.sync.dispatchEvent", | 
|  103                                    base::StringValue(name), |  120                                    base::StringValue(name), | 
|  104                                    details.Get()); |  121                                    details.Get()); | 
|  105 } |  122 } | 
|  106  |  123  | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
|  137 } |  154 } | 
|  138  |  155  | 
|  139 // Gets the ProfileSyncService of the underlying original profile. |  156 // Gets the ProfileSyncService of the underlying original profile. | 
|  140 // May return NULL (e.g., if sync is disabled on the command line). |  157 // May return NULL (e.g., if sync is disabled on the command line). | 
|  141 ProfileSyncService* SyncInternalsMessageHandler::GetProfileSyncService() { |  158 ProfileSyncService* SyncInternalsMessageHandler::GetProfileSyncService() { | 
|  142   Profile* profile = Profile::FromWebUI(web_ui()); |  159   Profile* profile = Profile::FromWebUI(web_ui()); | 
|  143   ProfileSyncServiceFactory* factory = ProfileSyncServiceFactory::GetInstance(); |  160   ProfileSyncServiceFactory* factory = ProfileSyncServiceFactory::GetInstance(); | 
|  144   return factory->GetForProfile(profile->GetOriginalProfile()); |  161   return factory->GetForProfile(profile->GetOriginalProfile()); | 
|  145 } |  162 } | 
|  146  |  163  | 
| OLD | NEW |