| Index: components/password_manager/core/browser/log_router.cc
|
| diff --git a/components/password_manager/core/browser/log_router.cc b/components/password_manager/core/browser/log_router.cc
|
| index 03141bcf584e72a8da888c5e3f8d644852ca95f5..f23c95c5afbbde1a050fdd5a718fd4e9259fe4cd 100644
|
| --- a/components/password_manager/core/browser/log_router.cc
|
| +++ b/components/password_manager/core/browser/log_router.cc
|
| @@ -5,16 +5,14 @@
|
| #include "components/password_manager/core/browser/log_router.h"
|
|
|
| #include "base/stl_util.h"
|
| +#include "components/password_manager/core/browser/log_manager.h"
|
| #include "components/password_manager/core/browser/log_receiver.h"
|
| -#include "components/password_manager/core/browser/password_manager_client.h"
|
|
|
| namespace password_manager {
|
|
|
| -LogRouter::LogRouter() {
|
| -}
|
| +LogRouter::LogRouter() = default;
|
|
|
| -LogRouter::~LogRouter() {
|
| -}
|
| +LogRouter::~LogRouter() = default;
|
|
|
| void LogRouter::ProcessLog(const std::string& text) {
|
| // This may not be called when there are no receivers (i.e., the router is
|
| @@ -24,15 +22,15 @@ void LogRouter::ProcessLog(const std::string& text) {
|
| FOR_EACH_OBSERVER(LogReceiver, receivers_, LogSavePasswordProgress(text));
|
| }
|
|
|
| -bool LogRouter::RegisterClient(PasswordManagerClient* client) {
|
| - DCHECK(client);
|
| - clients_.AddObserver(client);
|
| +bool LogRouter::RegisterManager(LogManager* manager) {
|
| + DCHECK(manager);
|
| + managers_.AddObserver(manager);
|
| return receivers_.might_have_observers();
|
| }
|
|
|
| -void LogRouter::UnregisterClient(PasswordManagerClient* client) {
|
| - DCHECK(clients_.HasObserver(client));
|
| - clients_.RemoveObserver(client);
|
| +void LogRouter::UnregisterManager(LogManager* manager) {
|
| + DCHECK(managers_.HasObserver(manager));
|
| + managers_.RemoveObserver(manager);
|
| }
|
|
|
| std::string LogRouter::RegisterReceiver(LogReceiver* receiver) {
|
| @@ -40,8 +38,8 @@ std::string LogRouter::RegisterReceiver(LogReceiver* receiver) {
|
| DCHECK(accumulated_logs_.empty() || receivers_.might_have_observers());
|
|
|
| if (!receivers_.might_have_observers()) {
|
| - FOR_EACH_OBSERVER(
|
| - PasswordManagerClient, clients_, OnLogRouterAvailabilityChanged(true));
|
| + FOR_EACH_OBSERVER(LogManager, managers_,
|
| + OnLogRouterAvailabilityChanged(true));
|
| }
|
| receivers_.AddObserver(receiver);
|
| return accumulated_logs_;
|
| @@ -51,9 +49,11 @@ void LogRouter::UnregisterReceiver(LogReceiver* receiver) {
|
| DCHECK(receivers_.HasObserver(receiver));
|
| receivers_.RemoveObserver(receiver);
|
| if (!receivers_.might_have_observers()) {
|
| - accumulated_logs_.clear();
|
| - FOR_EACH_OBSERVER(
|
| - PasswordManagerClient, clients_, OnLogRouterAvailabilityChanged(false));
|
| + // |accumulated_logs_| can become very long; use the swap instead of clear()
|
| + // to ensure that the memory is freed.
|
| + std::string().swap(accumulated_logs_);
|
| + FOR_EACH_OBSERVER(LogManager, managers_,
|
| + OnLogRouterAvailabilityChanged(false));
|
| }
|
| }
|
|
|
|
|