Chromium Code Reviews| Index: components/password_manager/content/browser/content_password_manager_driver_factory.cc |
| diff --git a/components/password_manager/content/browser/content_password_manager_driver_factory.cc b/components/password_manager/content/browser/content_password_manager_driver_factory.cc |
| index 8a07ab9d1c4579f54bbff53771203ca8b3e73cb5..4b072618444965ce4bf233129ea3897ec69eb4b1 100644 |
| --- a/components/password_manager/content/browser/content_password_manager_driver_factory.cc |
| +++ b/components/password_manager/content/browser/content_password_manager_driver_factory.cc |
| @@ -52,8 +52,10 @@ ContentPasswordManagerDriverFactory::ContentPasswordManagerDriverFactory( |
| password_client_(password_client), |
| autofill_client_(autofill_client) { |
| content::RenderFrameHost* main_frame = web_contents->GetMainFrame(); |
| - if (main_frame->IsRenderFrameLive()) |
| - CreateDriverForFrame(main_frame); |
| + if (main_frame->IsRenderFrameLive()) { |
| + ContentPasswordManagerDriver* new_driver = CreateDriverForFrame(main_frame); |
| + new_driver->NotifyAboutLoggingAvailability(logging_available_); |
|
vasilii
2015/11/12 16:27:34
|logging_available_| is false here by default. Can
vabr (Chromium)
2015/11/12 21:55:43
Fair point. It is off by default in the driver as
|
| + } |
| } |
| ContentPasswordManagerDriverFactory::~ContentPasswordManagerDriverFactory() {} |
| @@ -77,8 +79,11 @@ ContentPasswordManagerDriverFactory::GetDriverForFrame( |
| void ContentPasswordManagerDriverFactory::RenderFrameCreated( |
| content::RenderFrameHost* render_frame_host) { |
| // This is called twice for the main frame. |
| - if (!ContainsKey(frame_driver_map_, render_frame_host)) |
| - CreateDriverForFrame(render_frame_host); |
| + if (!ContainsKey(frame_driver_map_, render_frame_host)) { |
| + ContentPasswordManagerDriver* new_driver = |
| + CreateDriverForFrame(render_frame_host); |
| + new_driver->NotifyAboutLoggingAvailability(logging_available_); |
| + } |
| } |
| void ContentPasswordManagerDriverFactory::RenderFrameDeleted( |
| @@ -108,13 +113,16 @@ void ContentPasswordManagerDriverFactory::DidNavigateAnyFrame( |
| ->second->DidNavigateFrame(details, params); |
| } |
| -void ContentPasswordManagerDriverFactory::CreateDriverForFrame( |
| +ContentPasswordManagerDriver* |
| +ContentPasswordManagerDriverFactory::CreateDriverForFrame( |
| content::RenderFrameHost* render_frame_host) { |
| DCHECK(!ContainsKey(frame_driver_map_, render_frame_host)); |
| - frame_driver_map_.set( |
| - render_frame_host, |
| - make_scoped_ptr(new ContentPasswordManagerDriver( |
| - render_frame_host, password_client_, autofill_client_))); |
| + scoped_ptr<ContentPasswordManagerDriver> driver( |
| + new ContentPasswordManagerDriver(render_frame_host, password_client_, |
| + autofill_client_)); |
| + ContentPasswordManagerDriver* weak_return_pointer = driver.get(); |
| + frame_driver_map_.set(render_frame_host, driver.Pass()); |
| + return weak_return_pointer; |
| } |
| void ContentPasswordManagerDriverFactory::TestingSetDriverForFrame( |
| @@ -123,4 +131,14 @@ void ContentPasswordManagerDriverFactory::TestingSetDriverForFrame( |
| frame_driver_map_.set(render_frame_host, driver.Pass()); |
| } |
| +void ContentPasswordManagerDriverFactory::NotifyDriversAboutLoggingAvailability( |
| + bool is_available) { |
| + if (is_available == logging_available_) |
| + return; |
| + logging_available_ = is_available; |
| + for (auto key_val_iterator : frame_driver_map_) { |
| + key_val_iterator.second->NotifyAboutLoggingAvailability(logging_available_); |
| + } |
| +} |
| + |
| } // namespace password_manager |