Index: components/autofill/content/renderer/renderer_save_password_progress_logger_unittest.cc |
diff --git a/components/autofill/content/renderer/renderer_save_password_progress_logger_unittest.cc b/components/autofill/content/renderer/renderer_save_password_progress_logger_unittest.cc |
index 73c2bd82ce4a0645c8841bb729a07277cb6e9f4c..874f534e8ade4c8ebf7fbc7681115aba6a6f0670 100644 |
--- a/components/autofill/content/renderer/renderer_save_password_progress_logger_unittest.cc |
+++ b/components/autofill/content/renderer/renderer_save_password_progress_logger_unittest.cc |
@@ -2,14 +2,12 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/optional.h" |
+#include "base/run_loop.h" |
+#include "components/autofill/content/public/interfaces/autofill_driver.mojom.h" |
#include "components/autofill/content/renderer/renderer_save_password_progress_logger.h" |
+#include "mojo/public/cpp/bindings/binding.h" |
-#include <stdint.h> |
- |
-#include <tuple> |
- |
-#include "components/autofill/content/common/autofill_messages.h" |
-#include "ipc/ipc_test_sink.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace autofill { |
@@ -18,40 +16,91 @@ namespace { |
const char kTestText[] = "test"; |
-class TestLogger : public RendererSavePasswordProgressLogger { |
+class FakeContentPasswordManagerDriver : public mojom::PasswordManagerDriver { |
public: |
- TestLogger() : RendererSavePasswordProgressLogger(&sink_, 0) {} |
+ FakeContentPasswordManagerDriver() |
+ : called_record_save_(false), binding_(this) {} |
+ ~FakeContentPasswordManagerDriver() override {} |
- using RendererSavePasswordProgressLogger::SendLog; |
+ mojom::PasswordManagerDriverPtr CreateInterfacePtrAndBind() { |
+ return binding_.CreateInterfacePtrAndBind(); |
+ } |
- // Searches for an |AutofillHostMsg_RecordSavePasswordProgress| message in the |
- // queue of sent IPC messages. If none is present, returns false. Otherwise, |
- // extracts the first |AutofillHostMsg_RecordSavePasswordProgress| message, |
- // fills the output parameter with the value of the message's parameter, and |
- // clears the queue of sent messages. |
bool GetLogMessage(std::string* log) { |
- const uint32_t kMsgID = AutofillHostMsg_RecordSavePasswordProgress::ID; |
- const IPC::Message* message = sink_.GetFirstMessageMatching(kMsgID); |
- if (!message) |
+ if (!called_record_save_) |
return false; |
- std::tuple<std::string> param; |
- AutofillHostMsg_RecordSavePasswordProgress::Read(message, ¶m); |
- *log = std::get<0>(param); |
- sink_.ClearMessages(); |
+ |
+ EXPECT_TRUE(log_); |
+ *log = *log_; |
return true; |
} |
private: |
- IPC::TestSink sink_; |
+ // autofill::mojom::PasswordManagerDriver: |
+ void PasswordFormsParsed( |
+ const std::vector<autofill::PasswordForm>& forms) override {} |
+ |
+ void PasswordFormsRendered( |
+ const std::vector<autofill::PasswordForm>& visible_forms, |
+ bool did_stop_loading) override {} |
+ |
+ void PasswordFormSubmitted( |
+ const autofill::PasswordForm& password_form) override {} |
+ |
+ void InPageNavigation(const autofill::PasswordForm& password_form) override {} |
+ |
+ void PresaveGeneratedPassword( |
+ const autofill::PasswordForm& password_form) override {} |
+ |
+ void PasswordNoLongerGenerated( |
+ const autofill::PasswordForm& password_form) override {} |
+ |
+ void ShowPasswordSuggestions(int key, |
+ base::i18n::TextDirection text_direction, |
+ const base::string16& typed_username, |
+ int options, |
+ const gfx::RectF& bounds) override {} |
+ |
+ void PasswordAutofillAgentConstructed() override {} |
+ |
+ void RecordSavePasswordProgress(const std::string& log) override { |
+ called_record_save_ = true; |
+ log_ = log; |
+ } |
+ |
+ void SaveGenerationFieldDetectedByClassifier( |
+ const autofill::PasswordForm& password_form, |
+ const base::string16& generation_field) override {} |
+ |
+ // Records whether RecordSavePasswordProgress() gets called. |
+ bool called_record_save_; |
+ // Records data received via RecordSavePasswordProgress() call. |
+ base::Optional<std::string> log_; |
+ |
+ mojo::Binding<mojom::PasswordManagerDriver> binding_; |
+}; |
+ |
+class TestLogger : public RendererSavePasswordProgressLogger { |
+ public: |
+ TestLogger(mojom::PasswordManagerDriver* driver) |
+ : RendererSavePasswordProgressLogger(driver) {} |
+ |
+ using RendererSavePasswordProgressLogger::SendLog; |
}; |
} // namespace |
TEST(RendererSavePasswordProgressLoggerTest, SendLog) { |
- TestLogger logger; |
+ base::MessageLoop loop; |
+ FakeContentPasswordManagerDriver fake_driver; |
+ mojom::PasswordManagerDriverPtr driver_ptr = |
+ fake_driver.CreateInterfacePtrAndBind(); |
+ TestLogger logger(driver_ptr.get()); |
logger.SendLog(kTestText); |
+ |
+ base::RunLoop().RunUntilIdle(); |
std::string sent_log; |
- EXPECT_TRUE(logger.GetLogMessage(&sent_log)); |
+ EXPECT_TRUE(fake_driver.GetLogMessage(&sent_log)); |
EXPECT_EQ(kTestText, sent_log); |
} |