OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <algorithm> | 5 #include <algorithm> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
75 } | 75 } |
76 | 76 |
77 virtual void TearDown() OVERRIDE { | 77 virtual void TearDown() OVERRIDE { |
78 // Reset the driver now to cause all pref observers to be removed and avoid | 78 // Reset the driver now to cause all pref observers to be removed and avoid |
79 // crashes that otherwise occur in the destructor. | 79 // crashes that otherwise occur in the destructor. |
80 driver_.reset(); | 80 driver_.reset(); |
81 ChromeRenderViewHostTestHarness::TearDown(); | 81 ChromeRenderViewHostTestHarness::TearDown(); |
82 } | 82 } |
83 | 83 |
84 protected: | 84 protected: |
85 // Searches for an |AutofillMsg_AcceptDataListSuggestion| message in the queue | |
86 // of sent IPC messages. If none is present, returns false. Otherwise, | |
87 // extracts the first |AutofillMsg_AcceptDataListSuggestion| message, fills | |
88 // the output parameter with the value of the message's parameter, and clears | |
89 // the queue of sent messages. | |
90 bool GetAcceptDataListSuggestion( | |
91 base::string16* value) { | |
92 const uint32 kMsgID = AutofillMsg_AcceptDataListSuggestion::ID; | |
93 const IPC::Message* message = | |
94 process()->sink().GetFirstMessageMatching(kMsgID); | |
95 if (!message) | |
96 return false; | |
97 Tuple1<base::string16> autofill_param; | |
98 AutofillMsg_AcceptDataListSuggestion::Read(message, &autofill_param); | |
99 if (value) | |
100 *value = autofill_param.a; | |
101 process()->sink().ClearMessages(); | |
102 return true; | |
103 } | |
104 | |
105 // Searches for an |AutofillMsg_FormDataFilled| message in the queue of sent | 85 // Searches for an |AutofillMsg_FormDataFilled| message in the queue of sent |
106 // IPC messages. If none is present, returns false. Otherwise, extracts the | 86 // IPC messages. If none is present, returns false. Otherwise, extracts the |
107 // first |AutofillMsg_FormDataFilled| message, fills the output parameters | 87 // first |AutofillMsg_FormDataFilled| message, fills the output parameters |
108 // with the values of the message's parameters, and clears the queue of sent | 88 // with the values of the message's parameters, and clears the queue of sent |
109 // messages. | 89 // messages. |
110 bool GetAutofillFormDataFilledMessage(int* page_id, FormData* results) { | 90 bool GetAutofillFormDataFilledMessage(int* page_id, FormData* results) { |
111 const uint32 kMsgID = AutofillMsg_FormDataFilled::ID; | 91 const uint32 kMsgID = AutofillMsg_FormDataFilled::ID; |
112 const IPC::Message* message = | 92 const IPC::Message* message = |
113 process()->sink().GetFirstMessageMatching(kMsgID); | 93 process()->sink().GetFirstMessageMatching(kMsgID); |
114 if (!message) | 94 if (!message) |
(...skipping 23 matching lines...) Expand all Loading... | |
138 Tuple1<std::vector<FormDataPredictions> > autofill_param; | 118 Tuple1<std::vector<FormDataPredictions> > autofill_param; |
139 AutofillMsg_FieldTypePredictionsAvailable::Read(message, &autofill_param); | 119 AutofillMsg_FieldTypePredictionsAvailable::Read(message, &autofill_param); |
140 if (predictions) | 120 if (predictions) |
141 *predictions = autofill_param.a; | 121 *predictions = autofill_param.a; |
142 | 122 |
143 process()->sink().ClearMessages(); | 123 process()->sink().ClearMessages(); |
144 return true; | 124 return true; |
145 } | 125 } |
146 | 126 |
147 // Searches for a message matching |messageID| in the queue of sent IPC | 127 // Searches for a message matching |messageID| in the queue of sent IPC |
128 // messages. If none is present, returns false. Otherwise, extracts the first | |
129 // matching message, fills the output parameter with the value of the | |
130 // message's parameter, and clears the queue of sent messages. | |
blundell
2013/11/13 15:26:49
Mention that this is specific to the parameter bei
jif-google
2013/11/14 13:52:04
Done.
| |
131 bool GetValueFromMessageWithID(uint32 messageID, base::string16* value) { | |
blundell
2013/11/13 15:26:49
Actually I guess this should be something like |Ge
jif-google
2013/11/14 13:52:04
Done.
| |
132 const IPC::Message* message = | |
133 process()->sink().GetFirstMessageMatching(messageID); | |
134 if (!message) | |
135 return false; | |
136 Tuple1<base::string16> autofill_param; | |
137 switch (messageID) { | |
138 case AutofillMsg_SetNodeText::ID: | |
139 AutofillMsg_SetNodeText::Read(message, &autofill_param); | |
140 break; | |
141 case AutofillMsg_AcceptDataListSuggestion::ID: | |
142 AutofillMsg_AcceptDataListSuggestion::Read(message, &autofill_param); | |
143 break; | |
144 default: | |
145 NOTREACHED(); | |
146 } | |
147 if (value) | |
148 *value = autofill_param.a; | |
149 process()->sink().ClearMessages(); | |
150 return true; | |
151 } | |
152 | |
153 // Searches for a message matching |messageID| in the queue of sent IPC | |
148 // messages. If none is present, returns false. Otherwise, clears the queue | 154 // messages. If none is present, returns false. Otherwise, clears the queue |
149 // of sent messages and returns true. | 155 // of sent messages and returns true. |
150 bool HasMessageMatchingID(uint32 messageID) { | 156 bool HasMessageMatchingID(uint32 messageID) { |
151 const IPC::Message* message = | 157 const IPC::Message* message = |
152 process()->sink().GetFirstMessageMatching(messageID); | 158 process()->sink().GetFirstMessageMatching(messageID); |
153 if (!message) | 159 if (!message) |
154 return false; | 160 return false; |
155 process()->sink().ClearMessages(); | 161 process()->sink().ClearMessages(); |
156 return true; | 162 return true; |
157 } | 163 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
228 TEST_F(AutofillDriverImplTest, FillActionSentToRenderer) { | 234 TEST_F(AutofillDriverImplTest, FillActionSentToRenderer) { |
229 driver_->SetRendererActionOnFormDataReception( | 235 driver_->SetRendererActionOnFormDataReception( |
230 AutofillDriver::FORM_DATA_ACTION_FILL); | 236 AutofillDriver::FORM_DATA_ACTION_FILL); |
231 EXPECT_TRUE(HasMessageMatchingID(AutofillMsg_SetAutofillActionFill::ID)); | 237 EXPECT_TRUE(HasMessageMatchingID(AutofillMsg_SetAutofillActionFill::ID)); |
232 } | 238 } |
233 | 239 |
234 TEST_F(AutofillDriverImplTest, AcceptDataListSuggestion) { | 240 TEST_F(AutofillDriverImplTest, AcceptDataListSuggestion) { |
235 base::string16 inputValue(UTF8ToUTF16("barfoo")); | 241 base::string16 inputValue(UTF8ToUTF16("barfoo")); |
236 base::string16 outputValue; | 242 base::string16 outputValue; |
237 driver_->RendererShouldAcceptDataListSuggestion(inputValue); | 243 driver_->RendererShouldAcceptDataListSuggestion(inputValue); |
238 EXPECT_TRUE(GetAcceptDataListSuggestion(&outputValue)); | 244 EXPECT_TRUE(GetValueFromMessageWithID( |
245 AutofillMsg_AcceptDataListSuggestion::ID, | |
246 &outputValue)); | |
239 EXPECT_EQ(inputValue, outputValue); | 247 EXPECT_EQ(inputValue, outputValue); |
240 } | 248 } |
241 | 249 |
242 TEST_F(AutofillDriverImplTest, ClearFilledFormSentToRenderer) { | 250 TEST_F(AutofillDriverImplTest, ClearFilledFormSentToRenderer) { |
243 driver_->RendererShouldClearFilledForm(); | 251 driver_->RendererShouldClearFilledForm(); |
244 EXPECT_TRUE(HasMessageMatchingID(AutofillMsg_ClearForm::ID)); | 252 EXPECT_TRUE(HasMessageMatchingID(AutofillMsg_ClearForm::ID)); |
245 } | 253 } |
246 | 254 |
247 TEST_F(AutofillDriverImplTest, ClearPreviewedFormSentToRenderer) { | 255 TEST_F(AutofillDriverImplTest, ClearPreviewedFormSentToRenderer) { |
248 driver_->RendererShouldClearPreviewedForm(); | 256 driver_->RendererShouldClearPreviewedForm(); |
249 EXPECT_TRUE(HasMessageMatchingID(AutofillMsg_ClearPreviewedForm::ID)); | 257 EXPECT_TRUE(HasMessageMatchingID(AutofillMsg_ClearPreviewedForm::ID)); |
250 } | 258 } |
251 | 259 |
260 TEST_F(AutofillDriverImplTest, SetNodeText) { | |
261 base::string16 inputValue(UTF8ToUTF16("barqux")); | |
Ilya Sherman
2013/11/14 01:26:14
nit: ASCIIToUTF16 (slightly cheaper)
jif-google
2013/11/14 13:52:04
Done.
| |
262 base::string16 outputValue; | |
263 driver_->RendererShouldSetNodeText(inputValue); | |
264 EXPECT_TRUE(GetValueFromMessageWithID(AutofillMsg_SetNodeText::ID, | |
265 &outputValue)); | |
266 EXPECT_EQ(inputValue, outputValue); | |
267 } | |
268 | |
252 } // namespace autofill | 269 } // namespace autofill |
OLD | NEW |