OLD | NEW |
---|---|
(Empty) | |
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. | |
4 | |
5 #include "components/password_manager/core/browser/log_router.h" | |
6 | |
7 #include "base/stl_util.h" | |
8 #include "components/password_manager/core/browser/password_manager_client.h" | |
9 #include "components/password_manager/core/browser/password_manager_logger.h" | |
10 | |
11 namespace password_manager { | |
12 | |
13 LogRouter::LogRouter() { | |
14 } | |
15 | |
16 LogRouter::~LogRouter() { | |
17 } | |
18 | |
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 PasswordManagerLogger, receivers_, LogSavePasswordProgress(text)); | |
26 } | |
27 | |
28 bool LogRouter::RegisterClient(PasswordManagerClient* client) { | |
29 DCHECK(client); | |
30 clients_.AddObserver(client); | |
31 return receivers_.might_have_observers(); | |
32 } | |
33 | |
34 void LogRouter::UnregisterClient(PasswordManagerClient* client) { | |
35 DCHECK(clients_.HasObserver(client)); | |
36 clients_.RemoveObserver(client); | |
37 } | |
38 | |
39 std::string LogRouter::RegisterReceiver(PasswordManagerLogger* receiver) { | |
40 DCHECK(receiver); | |
41 DCHECK(accumulated_logs_.empty() || receivers_.might_have_observers()); | |
42 | |
43 if (!receivers_.might_have_observers()) { | |
44 accumulated_logs_.clear(); | |
Ilya Sherman
2014/05/08 17:48:38
There's a DCHECK above that asserts that this code
vabr (Chromium)
2014/05/09 09:47:20
I overlooked the DCHECK above, my bad.
Yes, I'm wo
| |
45 // TODO(vabr): Once the clients provide API for that, notify them if the | |
46 // number of receivers went from 0 to 1. | |
47 } | |
48 receivers_.AddObserver(receiver); | |
49 return accumulated_logs_; | |
50 } | |
51 | |
52 void LogRouter::UnregisterReceiver(PasswordManagerLogger* receiver) { | |
53 DCHECK(receivers_.HasObserver(receiver)); | |
54 receivers_.RemoveObserver(receiver); | |
55 if (!receivers_.might_have_observers()) { | |
56 accumulated_logs_.clear(); | |
57 // TODO(vabr): Once the clients provide API for that, notify them that the | |
58 // number of receivers went from 1 to 0. | |
59 } | |
60 } | |
61 | |
62 } // namespace password_manager | |
OLD | NEW |