| 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);
|
| }
|
|
|
|
|