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

Unified Diff: components/autofill/content/browser/content_autofill_driver_unittest.cc

Issue 2007473004: [Autofill] Migrate ContentAutofillDriver<-->AutofillAgent IPCs to mojo. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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: components/autofill/content/browser/content_autofill_driver_unittest.cc
diff --git a/components/autofill/content/browser/content_autofill_driver_unittest.cc b/components/autofill/content/browser/content_autofill_driver_unittest.cc
index bc88e12f2ad08d02ce69f5bbc61d3807b397319c..94d869a4930cfd2a6a5a56b586cb1b8aa490c09e 100644
--- a/components/autofill/content/browser/content_autofill_driver_unittest.cc
+++ b/components/autofill/content/browser/content_autofill_driver_unittest.cc
@@ -13,6 +13,8 @@
#include <vector>
#include "base/command_line.h"
+#include "base/message_loop/message_loop.h"
+#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/content/common/autofill_messages.h"
#include "components/autofill/core/browser/autofill_external_delegate.h"
@@ -26,9 +28,11 @@
#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/frame_navigate_params.h"
+#include "content/public/common/service_registry.h"
#include "content/public/test/mock_render_process_host.h"
#include "content/public/test/test_renderer_host.h"
#include "ipc/ipc_test_sink.h"
+#include "mojo/public/cpp/bindings/binding_set.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -40,6 +44,13 @@ const char kAppLocale[] = "en-US";
const AutofillManager::AutofillDownloadManagerState kDownloadState =
AutofillManager::DISABLE_AUTOFILL_DOWNLOAD_MANAGER;
+void RunAllPendingTasks() {
+ base::RunLoop run_loop;
+ base::MessageLoop::current()->PostTask(
+ FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
yzshen1 2016/05/24 16:12:10 QuitWhenIdleClosure is deprecated according to the
leonhsl(Using Gerrit) 2016/06/23 10:00:12 Done.
+ run_loop.Run();
+}
+
} // namespace
class MockAutofillManager : public AutofillManager {
@@ -69,7 +80,8 @@ class TestContentAutofillDriver : public ContentAutofillDriver {
using ContentAutofillDriver::DidNavigateFrame;
};
-class ContentAutofillDriverTest : public content::RenderViewHostTestHarness {
+class ContentAutofillDriverTest : public content::RenderViewHostTestHarness,
+ public mojom::AutofillAgent {
vabr (Chromium) 2016/05/24 08:08:20 Please aggregate a test version of an mojom::Autof
leonhsl(Using Gerrit) 2016/06/23 10:00:12 Done.
public:
void SetUp() override {
content::RenderViewHostTestHarness::SetUp();
@@ -77,6 +89,16 @@ class ContentAutofillDriverTest : public content::RenderViewHostTestHarness {
test_autofill_client_.reset(new TestAutofillClient());
driver_.reset(new TestContentAutofillDriver(web_contents()->GetMainFrame(),
test_autofill_client_.get()));
+
+ id_sent_ = -1;
vabr (Chromium) 2016/05/24 08:08:20 Please initialise this in the constructor or via a
leonhsl(Using Gerrit) 2016/06/23 10:00:12 Done.
+ form_sent_.reset();
vabr (Chromium) 2016/05/24 08:08:20 No need for this, it is null since construction, a
leonhsl(Using Gerrit) 2016/06/23 10:00:12 Done.
+
+ content::ServiceRegistry* registry =
+ web_contents()->GetMainFrame()->GetServiceRegistry();
+ registry->AddServiceOverrideForTesting(
+ mojom::AutofillAgent::Name_,
+ base::Bind(&ContentAutofillDriverTest::BindFakeAutofillAgent,
+ base::Unretained(this)));
}
void TearDown() override {
@@ -86,25 +108,35 @@ class ContentAutofillDriverTest : public content::RenderViewHostTestHarness {
content::RenderViewHostTestHarness::TearDown();
}
+ void BindFakeAutofillAgent(mojo::ScopedMessagePipeHandle handle) {
+ bindings_.AddBinding(
+ this, mojo::MakeRequest<mojom::AutofillAgent>(std::move(handle)));
+ }
+
protected:
- // Searches for an |AutofillMsg_FillForm| message in the queue of sent IPC
- // messages. If none is present, returns false. Otherwise, extracts the first
- // |AutofillMsg_FillForm| message, fills the output parameters with the values
- // of the message's parameters, and clears the queue of sent messages.
+ // mojom::AutofillAgent methods:
+ void FirstUserGestureObservedInTab() override {}
+
+ void FillForm(int32_t id,
+ const FormData& form,
+ const FillFormCallback& callback) override {
+ id_sent_ = id;
+ form_sent_.reset(new FormData(form));
+ callback.Run(form, 0);
+ }
+
+ // Returns the id and formdata received via
+ // mojo interface method mojom::AutofillAgent::FillForm().
bool GetAutofillFillFormMessage(int* page_id, FormData* results) {
- const uint32_t kMsgID = AutofillMsg_FillForm::ID;
- const IPC::Message* message =
- process()->sink().GetFirstMessageMatching(kMsgID);
- if (!message)
+ if (id_sent_ == -1)
return false;
- std::tuple<int, FormData> autofill_param;
- if (!AutofillMsg_FillForm::Read(message, &autofill_param))
+ if (!form_sent_)
return false;
+
if (page_id)
- *page_id = std::get<0>(autofill_param);
+ *page_id = id_sent_;
if (results)
- *results = std::get<1>(autofill_param);
- process()->sink().ClearMessages();
+ *results = *form_sent_;
return true;
}
@@ -199,6 +231,10 @@ class ContentAutofillDriverTest : public content::RenderViewHostTestHarness {
std::unique_ptr<TestAutofillClient> test_autofill_client_;
std::unique_ptr<TestContentAutofillDriver> driver_;
+ mojo::BindingSet<mojom::AutofillAgent> bindings_;
+
+ int32_t id_sent_;
vabr (Chromium) 2016/05/24 08:08:20 nit: Please comment about what |id_sent_| and |for
leonhsl(Using Gerrit) 2016/06/23 10:00:12 Done.
+ std::unique_ptr<FormData> form_sent_;
};
TEST_F(ContentAutofillDriverTest, GetURLRequestContext) {
@@ -236,6 +272,8 @@ TEST_F(ContentAutofillDriverTest, FormDataSentToRenderer_FillForm) {
driver_->SendFormDataToRenderer(
yzshen1 2016/05/24 16:12:10 I am not familiar with auto fill code. Does this c
leonhsl(Using Gerrit) 2016/06/23 10:00:12 Done.
input_page_id, AutofillDriver::FORM_DATA_ACTION_FILL, input_form_data);
+ RunAllPendingTasks();
+
int output_page_id = 0;
FormData output_form_data;
EXPECT_FALSE(
@@ -252,6 +290,8 @@ TEST_F(ContentAutofillDriverTest, FormDataSentToRenderer_PreviewForm) {
driver_->SendFormDataToRenderer(
input_page_id, AutofillDriver::FORM_DATA_ACTION_PREVIEW, input_form_data);
+ RunAllPendingTasks();
+
int output_page_id = 0;
FormData output_form_data;
EXPECT_FALSE(GetAutofillFillFormMessage(&output_page_id, &output_form_data));

Powered by Google App Engine
This is Rietveld 408576698