Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / components / password_manager / core / browser / log_router.cc
blobc03cde9b99b5968fdca5da1d72b6e1911d832d0f
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
3 // found in the LICENSE file.
5 #include "components/password_manager/core/browser/log_router.h"
7 #include "base/stl_util.h"
8 #include "components/password_manager/core/browser/log_receiver.h"
9 #include "components/password_manager/core/browser/password_manager_client.h"
11 namespace password_manager {
13 LogRouter::LogRouter() {
16 LogRouter::~LogRouter() {
19 void LogRouter::ProcessLog(const std::string& text) {
20 // This may not be called when there are no receivers (i.e., the router is
21 // inactive), because in that case the logs cannot be displayed.
22 DCHECK(receivers_.might_have_observers());
23 accumulated_logs_.append(text);
24 FOR_EACH_OBSERVER(
25 LogReceiver, receivers_, LogSavePasswordProgress(text));
28 bool LogRouter::RegisterClient(PasswordManagerClient* client) {
29 DCHECK(client);
30 clients_.AddObserver(client);
31 return receivers_.might_have_observers();
34 void LogRouter::UnregisterClient(PasswordManagerClient* client) {
35 DCHECK(clients_.HasObserver(client));
36 clients_.RemoveObserver(client);
39 std::string LogRouter::RegisterReceiver(LogReceiver* receiver) {
40 DCHECK(receiver);
41 DCHECK(accumulated_logs_.empty() || receivers_.might_have_observers());
43 if (!receivers_.might_have_observers()) {
44 FOR_EACH_OBSERVER(
45 PasswordManagerClient, clients_, OnLogRouterAvailabilityChanged(true));
47 receivers_.AddObserver(receiver);
48 return accumulated_logs_;
51 void LogRouter::UnregisterReceiver(LogReceiver* receiver) {
52 DCHECK(receivers_.HasObserver(receiver));
53 receivers_.RemoveObserver(receiver);
54 if (!receivers_.might_have_observers()) {
55 accumulated_logs_.clear();
56 FOR_EACH_OBSERVER(
57 PasswordManagerClient, clients_, OnLogRouterAvailabilityChanged(false));
61 } // namespace password_manager