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/autofill/content/renderer/renderer_save_password_progress_logger.h" 6 7#include "components/autofill/content/common/autofill_messages.h" 8#include "ipc/ipc_test_sink.h" 9#include "testing/gtest/include/gtest/gtest.h" 10 11namespace autofill { 12 13namespace { 14 15const char kTestText[] = "test"; 16 17class TestLogger : public RendererSavePasswordProgressLogger { 18 public: 19 TestLogger() : RendererSavePasswordProgressLogger(&sink_, 0) {} 20 21 using RendererSavePasswordProgressLogger::SendLog; 22 23 // Searches for an |AutofillHostMsg_RecordSavePasswordProgress| message in the 24 // queue of sent IPC messages. If none is present, returns false. Otherwise, 25 // extracts the first |AutofillHostMsg_RecordSavePasswordProgress| message, 26 // fills the output parameter with the value of the message's parameter, and 27 // clears the queue of sent messages. 28 bool GetLogMessage(std::string* log) { 29 const uint32 kMsgID = AutofillHostMsg_RecordSavePasswordProgress::ID; 30 const IPC::Message* message = sink_.GetFirstMessageMatching(kMsgID); 31 if (!message) 32 return false; 33 Tuple1<std::string> param; 34 AutofillHostMsg_RecordSavePasswordProgress::Read(message, ¶m); 35 *log = param.a; 36 sink_.ClearMessages(); 37 return true; 38 } 39 40 private: 41 IPC::TestSink sink_; 42}; 43 44} // namespace 45 46TEST(RendererSavePasswordProgressLoggerTest, SendLog) { 47 TestLogger logger; 48 logger.SendLog(kTestText); 49 std::string sent_log; 50 EXPECT_TRUE(logger.GetLogMessage(&sent_log)); 51 EXPECT_EQ(kTestText, sent_log); 52} 53 54} // namespace autofill 55