Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Unified Diff: chrome/browser/password_manager/chrome_password_manager_client.cc

Issue 269513003: Password manager internals page service: wiring it in (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding forgotten s/NotifyCanUseLogRouter/OnLogRouterAvailabilityChanged in tests Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/password_manager/chrome_password_manager_client.cc
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc
index ecb7aa39ac50e18097d5499d9ee291cf0da07619..cddf254bbe0972f3d7a5bb0ff323c16be2940cf0 100644
--- a/chrome/browser/password_manager/chrome_password_manager_client.cc
+++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -21,8 +21,10 @@
#include "components/autofill/content/common/autofill_messages.h"
#include "components/autofill/core/browser/password_generator.h"
#include "components/autofill/core/common/password_form.h"
+#include "components/password_manager/content/browser/password_manager_internals_service_factory.h"
#include "components/password_manager/core/browser/password_form_manager.h"
#include "components/password_manager/core/browser/password_manager.h"
+#include "components/password_manager/core/browser/password_manager_internals_service.h"
#include "components/password_manager/core/browser/password_manager_logger.h"
#include "components/password_manager/core/browser/password_manager_metrics_util.h"
#include "components/password_manager/core/common/password_manager_switches.h"
@@ -33,6 +35,9 @@
#include "chrome/browser/android/password_authentication_manager.h"
#endif // OS_ANDROID
+using password_manager::PasswordManagerInternalsService;
+using password_manager::PasswordManagerInternalsServiceFactory;
+
namespace {
bool IsTheHotNewBubbleUIEnabled() {
@@ -71,12 +76,23 @@ ChromePasswordManagerClient::ChromePasswordManagerClient(
content::WebContents* web_contents,
autofill::AutofillManagerDelegate* autofill_manager_delegate)
: content::WebContentsObserver(web_contents),
+ profile_(Profile::FromBrowserContext(web_contents->GetBrowserContext())),
driver_(web_contents, this, autofill_manager_delegate),
observer_(NULL),
weak_factory_(this),
- logger_(NULL) {}
+ can_use_log_router_(false) {
+ PasswordManagerInternalsService* service =
+ PasswordManagerInternalsServiceFactory::GetForBrowserContext(profile_);
+ if (service)
+ can_use_log_router_ = service->RegisterClient(this);
+}
-ChromePasswordManagerClient::~ChromePasswordManagerClient() {}
+ChromePasswordManagerClient::~ChromePasswordManagerClient() {
+ PasswordManagerInternalsService* service =
+ PasswordManagerInternalsServiceFactory::GetForBrowserContext(profile_);
+ if (service)
+ service->UnregisterClient(this);
+}
bool ChromePasswordManagerClient::IsAutomaticPasswordSavingEnabled() const {
return CommandLine::ForCurrentProcess()->HasSwitch(
@@ -136,17 +152,13 @@ void ChromePasswordManagerClient::AuthenticateAutofillAndFillForm(
#endif // OS_ANDROID
}
-Profile* ChromePasswordManagerClient::GetProfile() {
- return Profile::FromBrowserContext(web_contents()->GetBrowserContext());
-}
-
void ChromePasswordManagerClient::HidePasswordGenerationPopup() {
if (popup_controller_)
popup_controller_->HideAndDestroy();
}
PrefService* ChromePasswordManagerClient::GetPrefs() {
- return GetProfile()->GetPrefs();
+ return profile_->GetPrefs();
}
password_manager::PasswordStore*
@@ -154,8 +166,8 @@ ChromePasswordManagerClient::GetPasswordStore() {
// Always use EXPLICIT_ACCESS as the password manager checks IsOffTheRecord
// itself when it shouldn't access the PasswordStore.
// TODO(gcasto): Is is safe to change this to Profile::IMPLICIT_ACCESS?
- return PasswordStoreFactory::GetForProfile(GetProfile(),
- Profile::EXPLICIT_ACCESS).get();
+ return PasswordStoreFactory::GetForProfile(profile_, Profile::EXPLICIT_ACCESS)
+ .get();
}
password_manager::PasswordManagerDriver*
@@ -183,7 +195,7 @@ ChromePasswordManagerClient::GetProbabilityForExperiment(
bool ChromePasswordManagerClient::IsPasswordSyncEnabled() {
ProfileSyncService* sync_service =
- ProfileSyncServiceFactory::GetForProfile(GetProfile());
+ ProfileSyncServiceFactory::GetForProfile(profile_);
// Don't consider sync enabled if the user has a custom passphrase. See
// crbug.com/358998 for more details.
if (sync_service &&
@@ -195,29 +207,35 @@ bool ChromePasswordManagerClient::IsPasswordSyncEnabled() {
return false;
}
-void ChromePasswordManagerClient::SetLogger(
- password_manager::PasswordManagerLogger* logger) {
- // We should never be replacing one logger with a different one, because that
- // will leave the first without further updates, and the user likely confused.
- // TODO(vabr): For the reason above, before moving the internals page from
- // behind the flag, make sure to restrict the number of internals page
- // instances to 1 in normal profiles, and 0 in incognito.
- DCHECK(!logger || !logger_);
- logger_ = logger;
+void ChromePasswordManagerClient::OnLogRouterAvailabilityChanged(
+ bool router_can_be_used) {
+ if (can_use_log_router_ == router_can_be_used)
+ return;
+ can_use_log_router_ = router_can_be_used;
+
+ if (!web_contents())
+ return;
// Also inform the renderer process to start or stop logging.
web_contents()->GetRenderViewHost()->Send(new AutofillMsg_ChangeLoggingState(
- web_contents()->GetRenderViewHost()->GetRoutingID(), logger != NULL));
+ web_contents()->GetRenderViewHost()->GetRoutingID(),
+ can_use_log_router_));
}
void ChromePasswordManagerClient::LogSavePasswordProgress(
const std::string& text) {
- if (IsLoggingActive())
- logger_->LogSavePasswordProgress(text);
+ if (!IsLoggingActive())
+ return;
+ PasswordManagerInternalsService* service =
+ PasswordManagerInternalsServiceFactory::GetForBrowserContext(profile_);
+ if (service)
+ service->ProcessLog(text);
}
bool ChromePasswordManagerClient::IsLoggingActive() const {
- return logger_ != NULL;
+ // WebUI tabs do not need to log password saving progress. In particular, the
+ // internals page itself should not send any logs.
+ return can_use_log_router_ && !web_contents()->GetWebUI();
}
// static

Powered by Google App Engine
This is Rietveld 408576698