Index: chrome/browser/ui/webui/conflicts_ui.cc |
diff --git a/chrome/browser/ui/webui/conflicts_ui.cc b/chrome/browser/ui/webui/conflicts_ui.cc |
index d1e0e1d06fe87529c11e8634fa453835ede4bed4..b08e94b67df65b64ad99bf4bbbc2c95ec4428e3c 100644 |
--- a/chrome/browser/ui/webui/conflicts_ui.cc |
+++ b/chrome/browser/ui/webui/conflicts_ui.cc |
@@ -16,15 +16,11 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "base/values.h" |
#include "build/build_config.h" |
-#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/win/enumerate_modules_model.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/grit/chromium_strings.h" |
#include "chrome/grit/generated_resources.h" |
-#include "content/public/browser/notification_observer.h" |
-#include "content/public/browser/notification_registrar.h" |
-#include "content/public/browser/notification_service.h" |
#include "content/public/browser/user_metrics.h" |
#include "content/public/browser/web_contents.h" |
#include "content/public/browser/web_ui.h" |
@@ -77,9 +73,9 @@ content::WebUIDataSource* CreateConflictsUIHTMLSource() { |
// |
//////////////////////////////////////////////////////////////////////////////// |
-// The handler for JavaScript messages for the about:flags page. |
+// The handler for JavaScript messages for the about:conflicts page. |
class ConflictsDOMHandler : public WebUIMessageHandler, |
- public content::NotificationObserver { |
+ public EnumerateModulesModel::Observer { |
public: |
ConflictsDOMHandler() {} |
~ConflictsDOMHandler() override {} |
@@ -93,11 +89,8 @@ class ConflictsDOMHandler : public WebUIMessageHandler, |
private: |
void SendModuleList(); |
- void Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) override; |
- |
- content::NotificationRegistrar registrar_; |
+ // EnumerateModulesModel::Observer implementation. |
+ void OnScanCompleted() override; |
DISALLOW_COPY_AND_ASSIGN(ConflictsDOMHandler); |
}; |
@@ -109,10 +102,11 @@ void ConflictsDOMHandler::RegisterMessages() { |
} |
void ConflictsDOMHandler::HandleRequestModuleList(const base::ListValue* args) { |
- // This request is handled asynchronously. See Observe for when we reply back. |
- registrar_.Add(this, chrome::NOTIFICATION_MODULE_LIST_ENUMERATED, |
- content::NotificationService::AllSources()); |
- EnumerateModulesModel::GetInstance()->ScanNow(); |
+ // The request is handled asynchronously, and will callback via |
+ // OnScanCompleted on completion. |
+ auto model = EnumerateModulesModel::GetInstance(); |
Lei Zhang
2016/08/04 14:33:32
auto*
chrisha
2016/08/12 19:04:40
Done.
|
+ model->AddObserver(this); |
Lei Zhang
2016/08/04 14:33:32
Can this end up adding the same observer twice? Th
Peter Kasting
2016/08/05 00:10:08
If this is a real concern, using a ScopedObserver
chrisha
2016/08/12 19:04:40
The ScopedObserver is cleaner IMO, and also allows
chrisha
2016/08/12 19:04:40
Shouldn't be possible from how the JS code is writ
|
+ model->ScanNow(); |
} |
void ConflictsDOMHandler::SendModuleList() { |
@@ -141,13 +135,9 @@ void ConflictsDOMHandler::SendModuleList() { |
web_ui()->CallJavascriptFunctionUnsafe("returnModuleList", results); |
} |
-void ConflictsDOMHandler::Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
- DCHECK_EQ(chrome::NOTIFICATION_MODULE_LIST_ENUMERATED, type); |
- |
+void ConflictsDOMHandler::OnScanCompleted() { |
SendModuleList(); |
- registrar_.RemoveAll(); |
+ EnumerateModulesModel::GetInstance()->RemoveObserver(this); |
} |
} // namespace |