Chromium Code Reviews| Index: components/autofill/browser/autofill_manager_unittest.cc |
| diff --git a/components/autofill/browser/autofill_manager_unittest.cc b/components/autofill/browser/autofill_manager_unittest.cc |
| index 0daffb015da2125112276af55da702fbb6fdb233..3fede5cb1703f8a6db05ca420a86cfd889ceedcd 100644 |
| --- a/components/autofill/browser/autofill_manager_unittest.cc |
| +++ b/components/autofill/browser/autofill_manager_unittest.cc |
| @@ -41,6 +41,7 @@ |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/test/mock_render_process_host.h" |
| #include "content/public/test/test_browser_thread.h" |
| +#include "content/public/test/test_utils.h" |
| #include "googleurl/src/gurl.h" |
| #include "grit/generated_resources.h" |
| #include "ipc/ipc_test_sink.h" |
| @@ -484,10 +485,7 @@ class TestAutofillManager : public AutofillManager { |
| TestPersonalDataManager* personal_data) |
| : AutofillManager(web_contents, delegate, personal_data), |
| personal_data_(personal_data), |
| - autofill_enabled_(true), |
| - did_finish_async_form_submit_(false), |
| - message_loop_is_running_(false) { |
| - } |
| + autofill_enabled_(true) {} |
| virtual ~TestAutofillManager() {} |
| virtual bool IsAutofillEnabled() const OVERRIDE { return autofill_enabled_; } |
| @@ -520,12 +518,7 @@ class TestAutofillManager : public AutofillManager { |
| const base::TimeTicks& load_time, |
| const base::TimeTicks& interaction_time, |
| const base::TimeTicks& submission_time) OVERRIDE { |
| - if (message_loop_is_running_) { |
| - MessageLoop::current()->Quit(); |
| - message_loop_is_running_ = false; |
| - } else { |
| - did_finish_async_form_submit_ = true; |
| - } |
| + message_loop_runner_->Quit(); |
| // If we have expected field types set, make sure they match. |
| if (!expected_submitted_field_types_.empty()) { |
| @@ -555,16 +548,15 @@ class TestAutofillManager : public AutofillManager { |
| submission_time); |
| } |
| + // Resets the MessageLoopRunner so that it can way for an asynchronous form |
|
groby-ooo-7-16
2013/04/15 22:19:20
nit: "wait for"
Ilya Sherman
2013/04/16 00:57:53
Done.
|
| + // submission to complete. |
| + void ResetMessageLoopRunner() { |
| + message_loop_runner_ = new content::MessageLoopRunner(); |
| + } |
| + |
| // Wait for the asynchronous OnFormSubmitted() call to complete. |
| void WaitForAsyncFormSubmit() { |
| - if (!did_finish_async_form_submit_) { |
| - // TODO(isherman): It seems silly to need this variable. Is there some |
| - // way I can just query the message loop's state? |
| - message_loop_is_running_ = true; |
| - MessageLoop::current()->Run(); |
| - } else { |
| - did_finish_async_form_submit_ = false; |
| - } |
| + message_loop_runner_->Run(); |
| } |
| virtual void UploadFormData(const FormStructure& submitted_form) OVERRIDE { |
| @@ -633,8 +625,7 @@ class TestAutofillManager : public AutofillManager { |
| std::vector<std::pair<WebFormElement::AutocompleteResult, FormData> > |
| request_autocomplete_results_; |
| - bool did_finish_async_form_submit_; |
| - bool message_loop_is_running_; |
| + scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| std::string autocheckout_url_prefix_; |
| std::string submitted_form_signature_; |
| @@ -731,6 +722,7 @@ class AutofillManagerTest : public ChromeRenderViewHostTestHarness { |
| } |
| void FormSubmitted(const FormData& form) { |
| + autofill_manager_->ResetMessageLoopRunner(); |
| if (autofill_manager_->OnFormSubmitted(form, base::TimeTicks::Now())) |
| autofill_manager_->WaitForAsyncFormSubmit(); |
| } |