| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "core/html/HTMLSelectElement.h" | 5 #include "core/html/HTMLSelectElement.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include "core/dom/Document.h" | 8 #include "core/dom/Document.h" |
| 9 #include "core/frame/FrameView.h" | 9 #include "core/frame/FrameView.h" |
| 10 #include "core/html/HTMLFormElement.h" | 10 #include "core/html/HTMLFormElement.h" |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 HTMLSelectElement* select = | 167 HTMLSelectElement* select = |
| 168 toHTMLSelectElement(document().body()->firstChild()); | 168 toHTMLSelectElement(document().body()->firstChild()); |
| 169 EXPECT_EQ(nullptr, select->firstSelectableOption()); | 169 EXPECT_EQ(nullptr, select->firstSelectableOption()); |
| 170 } | 170 } |
| 171 { | 171 { |
| 172 document().documentElement()->setInnerHTML( | 172 document().documentElement()->setInnerHTML( |
| 173 "<select><option id=o1></option><option id=o2></option></select>"); | 173 "<select><option id=o1></option><option id=o2></option></select>"); |
| 174 document().view()->updateAllLifecyclePhases(); | 174 document().view()->updateAllLifecyclePhases(); |
| 175 HTMLSelectElement* select = | 175 HTMLSelectElement* select = |
| 176 toHTMLSelectElement(document().body()->firstChild()); | 176 toHTMLSelectElement(document().body()->firstChild()); |
| 177 EXPECT_EQ("o1", select->firstSelectableOption()->fastGetAttribute( | 177 EXPECT_EQ( |
| 178 HTMLNames::idAttr)); | 178 "o1", |
| 179 select->firstSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 179 } | 180 } |
| 180 { | 181 { |
| 181 document().documentElement()->setInnerHTML( | 182 document().documentElement()->setInnerHTML( |
| 182 "<select><option id=o1 disabled></option><option " | 183 "<select><option id=o1 disabled></option><option " |
| 183 "id=o2></option></select>"); | 184 "id=o2></option></select>"); |
| 184 document().view()->updateAllLifecyclePhases(); | 185 document().view()->updateAllLifecyclePhases(); |
| 185 HTMLSelectElement* select = | 186 HTMLSelectElement* select = |
| 186 toHTMLSelectElement(document().body()->firstChild()); | 187 toHTMLSelectElement(document().body()->firstChild()); |
| 187 EXPECT_EQ("o2", select->firstSelectableOption()->fastGetAttribute( | 188 EXPECT_EQ( |
| 188 HTMLNames::idAttr)); | 189 "o2", |
| 190 select->firstSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 189 } | 191 } |
| 190 { | 192 { |
| 191 document().documentElement()->setInnerHTML( | 193 document().documentElement()->setInnerHTML( |
| 192 "<select><option id=o1 style='display:none'></option><option " | 194 "<select><option id=o1 style='display:none'></option><option " |
| 193 "id=o2></option></select>"); | 195 "id=o2></option></select>"); |
| 194 document().view()->updateAllLifecyclePhases(); | 196 document().view()->updateAllLifecyclePhases(); |
| 195 HTMLSelectElement* select = | 197 HTMLSelectElement* select = |
| 196 toHTMLSelectElement(document().body()->firstChild()); | 198 toHTMLSelectElement(document().body()->firstChild()); |
| 197 EXPECT_EQ("o2", select->firstSelectableOption()->fastGetAttribute( | 199 EXPECT_EQ( |
| 198 HTMLNames::idAttr)); | 200 "o2", |
| 201 select->firstSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 199 } | 202 } |
| 200 { | 203 { |
| 201 document().documentElement()->setInnerHTML( | 204 document().documentElement()->setInnerHTML( |
| 202 "<select><optgroup><option id=o1></option><option " | 205 "<select><optgroup><option id=o1></option><option " |
| 203 "id=o2></option></optgroup></select>"); | 206 "id=o2></option></optgroup></select>"); |
| 204 document().view()->updateAllLifecyclePhases(); | 207 document().view()->updateAllLifecyclePhases(); |
| 205 HTMLSelectElement* select = | 208 HTMLSelectElement* select = |
| 206 toHTMLSelectElement(document().body()->firstChild()); | 209 toHTMLSelectElement(document().body()->firstChild()); |
| 207 EXPECT_EQ("o1", select->firstSelectableOption()->fastGetAttribute( | 210 EXPECT_EQ( |
| 208 HTMLNames::idAttr)); | 211 "o1", |
| 212 select->firstSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 209 } | 213 } |
| 210 } | 214 } |
| 211 | 215 |
| 212 TEST_F(HTMLSelectElementTest, LastSelectableOption) { | 216 TEST_F(HTMLSelectElementTest, LastSelectableOption) { |
| 213 { | 217 { |
| 214 document().documentElement()->setInnerHTML("<select></select>"); | 218 document().documentElement()->setInnerHTML("<select></select>"); |
| 215 document().view()->updateAllLifecyclePhases(); | 219 document().view()->updateAllLifecyclePhases(); |
| 216 HTMLSelectElement* select = | 220 HTMLSelectElement* select = |
| 217 toHTMLSelectElement(document().body()->firstChild()); | 221 toHTMLSelectElement(document().body()->firstChild()); |
| 218 EXPECT_EQ(nullptr, select->lastSelectableOption()); | 222 EXPECT_EQ(nullptr, select->lastSelectableOption()); |
| 219 } | 223 } |
| 220 { | 224 { |
| 221 document().documentElement()->setInnerHTML( | 225 document().documentElement()->setInnerHTML( |
| 222 "<select><option id=o1></option><option id=o2></option></select>"); | 226 "<select><option id=o1></option><option id=o2></option></select>"); |
| 223 document().view()->updateAllLifecyclePhases(); | 227 document().view()->updateAllLifecyclePhases(); |
| 224 HTMLSelectElement* select = | 228 HTMLSelectElement* select = |
| 225 toHTMLSelectElement(document().body()->firstChild()); | 229 toHTMLSelectElement(document().body()->firstChild()); |
| 226 EXPECT_EQ("o2", select->lastSelectableOption()->fastGetAttribute( | 230 EXPECT_EQ( |
| 227 HTMLNames::idAttr)); | 231 "o2", |
| 232 select->lastSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 228 } | 233 } |
| 229 { | 234 { |
| 230 document().documentElement()->setInnerHTML( | 235 document().documentElement()->setInnerHTML( |
| 231 "<select><option id=o1></option><option id=o2 " | 236 "<select><option id=o1></option><option id=o2 " |
| 232 "disabled></option></select>"); | 237 "disabled></option></select>"); |
| 233 document().view()->updateAllLifecyclePhases(); | 238 document().view()->updateAllLifecyclePhases(); |
| 234 HTMLSelectElement* select = | 239 HTMLSelectElement* select = |
| 235 toHTMLSelectElement(document().body()->firstChild()); | 240 toHTMLSelectElement(document().body()->firstChild()); |
| 236 EXPECT_EQ("o1", select->lastSelectableOption()->fastGetAttribute( | 241 EXPECT_EQ( |
| 237 HTMLNames::idAttr)); | 242 "o1", |
| 243 select->lastSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 238 } | 244 } |
| 239 { | 245 { |
| 240 document().documentElement()->setInnerHTML( | 246 document().documentElement()->setInnerHTML( |
| 241 "<select><option id=o1></option><option id=o2 " | 247 "<select><option id=o1></option><option id=o2 " |
| 242 "style='display:none'></option></select>"); | 248 "style='display:none'></option></select>"); |
| 243 document().view()->updateAllLifecyclePhases(); | 249 document().view()->updateAllLifecyclePhases(); |
| 244 HTMLSelectElement* select = | 250 HTMLSelectElement* select = |
| 245 toHTMLSelectElement(document().body()->firstChild()); | 251 toHTMLSelectElement(document().body()->firstChild()); |
| 246 EXPECT_EQ("o1", select->lastSelectableOption()->fastGetAttribute( | 252 EXPECT_EQ( |
| 247 HTMLNames::idAttr)); | 253 "o1", |
| 254 select->lastSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 248 } | 255 } |
| 249 { | 256 { |
| 250 document().documentElement()->setInnerHTML( | 257 document().documentElement()->setInnerHTML( |
| 251 "<select><optgroup><option id=o1></option><option " | 258 "<select><optgroup><option id=o1></option><option " |
| 252 "id=o2></option></optgroup></select>"); | 259 "id=o2></option></optgroup></select>"); |
| 253 document().view()->updateAllLifecyclePhases(); | 260 document().view()->updateAllLifecyclePhases(); |
| 254 HTMLSelectElement* select = | 261 HTMLSelectElement* select = |
| 255 toHTMLSelectElement(document().body()->firstChild()); | 262 toHTMLSelectElement(document().body()->firstChild()); |
| 256 EXPECT_EQ("o2", select->lastSelectableOption()->fastGetAttribute( | 263 EXPECT_EQ( |
| 257 HTMLNames::idAttr)); | 264 "o2", |
| 265 select->lastSelectableOption()->fastGetAttribute(HTMLNames::idAttr)); |
| 258 } | 266 } |
| 259 } | 267 } |
| 260 | 268 |
| 261 TEST_F(HTMLSelectElementTest, NextSelectableOption) { | 269 TEST_F(HTMLSelectElementTest, NextSelectableOption) { |
| 262 { | 270 { |
| 263 document().documentElement()->setInnerHTML("<select></select>"); | 271 document().documentElement()->setInnerHTML("<select></select>"); |
| 264 document().view()->updateAllLifecyclePhases(); | 272 document().view()->updateAllLifecyclePhases(); |
| 265 HTMLSelectElement* select = | 273 HTMLSelectElement* select = |
| 266 toHTMLSelectElement(document().body()->firstChild()); | 274 toHTMLSelectElement(document().body()->firstChild()); |
| 267 EXPECT_EQ(nullptr, select->nextSelectableOption(nullptr)); | 275 EXPECT_EQ(nullptr, select->nextSelectableOption(nullptr)); |
| 268 } | 276 } |
| 269 { | 277 { |
| 270 document().documentElement()->setInnerHTML( | 278 document().documentElement()->setInnerHTML( |
| 271 "<select><option id=o1></option><option id=o2></option></select>"); | 279 "<select><option id=o1></option><option id=o2></option></select>"); |
| 272 document().view()->updateAllLifecyclePhases(); | 280 document().view()->updateAllLifecyclePhases(); |
| 273 HTMLSelectElement* select = | 281 HTMLSelectElement* select = |
| 274 toHTMLSelectElement(document().body()->firstChild()); | 282 toHTMLSelectElement(document().body()->firstChild()); |
| 275 EXPECT_EQ("o1", select->nextSelectableOption(nullptr)->fastGetAttribute( | 283 EXPECT_EQ("o1", |
| 276 HTMLNames::idAttr)); | 284 select->nextSelectableOption(nullptr)->fastGetAttribute( |
| 285 HTMLNames::idAttr)); |
| 277 } | 286 } |
| 278 { | 287 { |
| 279 document().documentElement()->setInnerHTML( | 288 document().documentElement()->setInnerHTML( |
| 280 "<select><option id=o1 disabled></option><option " | 289 "<select><option id=o1 disabled></option><option " |
| 281 "id=o2></option></select>"); | 290 "id=o2></option></select>"); |
| 282 document().view()->updateAllLifecyclePhases(); | 291 document().view()->updateAllLifecyclePhases(); |
| 283 HTMLSelectElement* select = | 292 HTMLSelectElement* select = |
| 284 toHTMLSelectElement(document().body()->firstChild()); | 293 toHTMLSelectElement(document().body()->firstChild()); |
| 285 EXPECT_EQ("o2", select->nextSelectableOption(nullptr)->fastGetAttribute( | 294 EXPECT_EQ("o2", |
| 286 HTMLNames::idAttr)); | 295 select->nextSelectableOption(nullptr)->fastGetAttribute( |
| 296 HTMLNames::idAttr)); |
| 287 } | 297 } |
| 288 { | 298 { |
| 289 document().documentElement()->setInnerHTML( | 299 document().documentElement()->setInnerHTML( |
| 290 "<select><option id=o1 style='display:none'></option><option " | 300 "<select><option id=o1 style='display:none'></option><option " |
| 291 "id=o2></option></select>"); | 301 "id=o2></option></select>"); |
| 292 document().view()->updateAllLifecyclePhases(); | 302 document().view()->updateAllLifecyclePhases(); |
| 293 HTMLSelectElement* select = | 303 HTMLSelectElement* select = |
| 294 toHTMLSelectElement(document().body()->firstChild()); | 304 toHTMLSelectElement(document().body()->firstChild()); |
| 295 EXPECT_EQ("o2", select->nextSelectableOption(nullptr)->fastGetAttribute( | 305 EXPECT_EQ("o2", |
| 296 HTMLNames::idAttr)); | 306 select->nextSelectableOption(nullptr)->fastGetAttribute( |
| 307 HTMLNames::idAttr)); |
| 297 } | 308 } |
| 298 { | 309 { |
| 299 document().documentElement()->setInnerHTML( | 310 document().documentElement()->setInnerHTML( |
| 300 "<select><optgroup><option id=o1></option><option " | 311 "<select><optgroup><option id=o1></option><option " |
| 301 "id=o2></option></optgroup></select>"); | 312 "id=o2></option></optgroup></select>"); |
| 302 document().view()->updateAllLifecyclePhases(); | 313 document().view()->updateAllLifecyclePhases(); |
| 303 HTMLSelectElement* select = | 314 HTMLSelectElement* select = |
| 304 toHTMLSelectElement(document().body()->firstChild()); | 315 toHTMLSelectElement(document().body()->firstChild()); |
| 305 EXPECT_EQ("o1", select->nextSelectableOption(nullptr)->fastGetAttribute( | 316 EXPECT_EQ("o1", |
| 306 HTMLNames::idAttr)); | 317 select->nextSelectableOption(nullptr)->fastGetAttribute( |
| 318 HTMLNames::idAttr)); |
| 307 } | 319 } |
| 308 { | 320 { |
| 309 document().documentElement()->setInnerHTML( | 321 document().documentElement()->setInnerHTML( |
| 310 "<select><option id=o1></option><option id=o2></option></select>"); | 322 "<select><option id=o1></option><option id=o2></option></select>"); |
| 311 document().view()->updateAllLifecyclePhases(); | 323 document().view()->updateAllLifecyclePhases(); |
| 312 HTMLSelectElement* select = | 324 HTMLSelectElement* select = |
| 313 toHTMLSelectElement(document().body()->firstChild()); | 325 toHTMLSelectElement(document().body()->firstChild()); |
| 314 HTMLOptionElement* option = | 326 HTMLOptionElement* option = |
| 315 toHTMLOptionElement(document().getElementById("o1")); | 327 toHTMLOptionElement(document().getElementById("o1")); |
| 316 EXPECT_EQ("o2", select->nextSelectableOption(option)->fastGetAttribute( | 328 EXPECT_EQ("o2", |
| 317 HTMLNames::idAttr)); | 329 select->nextSelectableOption(option)->fastGetAttribute( |
| 330 HTMLNames::idAttr)); |
| 318 | 331 |
| 319 EXPECT_EQ(nullptr, select->nextSelectableOption(toHTMLOptionElement( | 332 EXPECT_EQ(nullptr, |
| 320 document().getElementById("o2")))); | 333 select->nextSelectableOption( |
| 334 toHTMLOptionElement(document().getElementById("o2")))); |
| 321 } | 335 } |
| 322 { | 336 { |
| 323 document().documentElement()->setInnerHTML( | 337 document().documentElement()->setInnerHTML( |
| 324 "<select><option id=o1></option><optgroup><option " | 338 "<select><option id=o1></option><optgroup><option " |
| 325 "id=o2></option></optgroup></select>"); | 339 "id=o2></option></optgroup></select>"); |
| 326 document().view()->updateAllLifecyclePhases(); | 340 document().view()->updateAllLifecyclePhases(); |
| 327 HTMLSelectElement* select = | 341 HTMLSelectElement* select = |
| 328 toHTMLSelectElement(document().body()->firstChild()); | 342 toHTMLSelectElement(document().body()->firstChild()); |
| 329 HTMLOptionElement* option = | 343 HTMLOptionElement* option = |
| 330 toHTMLOptionElement(document().getElementById("o1")); | 344 toHTMLOptionElement(document().getElementById("o1")); |
| 331 EXPECT_EQ("o2", select->nextSelectableOption(option)->fastGetAttribute( | 345 EXPECT_EQ("o2", |
| 332 HTMLNames::idAttr)); | 346 select->nextSelectableOption(option)->fastGetAttribute( |
| 347 HTMLNames::idAttr)); |
| 333 } | 348 } |
| 334 } | 349 } |
| 335 | 350 |
| 336 TEST_F(HTMLSelectElementTest, PreviousSelectableOption) { | 351 TEST_F(HTMLSelectElementTest, PreviousSelectableOption) { |
| 337 { | 352 { |
| 338 document().documentElement()->setInnerHTML("<select></select>"); | 353 document().documentElement()->setInnerHTML("<select></select>"); |
| 339 document().view()->updateAllLifecyclePhases(); | 354 document().view()->updateAllLifecyclePhases(); |
| 340 HTMLSelectElement* select = | 355 HTMLSelectElement* select = |
| 341 toHTMLSelectElement(document().body()->firstChild()); | 356 toHTMLSelectElement(document().body()->firstChild()); |
| 342 EXPECT_EQ(nullptr, select->previousSelectableOption(nullptr)); | 357 EXPECT_EQ(nullptr, select->previousSelectableOption(nullptr)); |
| 343 } | 358 } |
| 344 { | 359 { |
| 345 document().documentElement()->setInnerHTML( | 360 document().documentElement()->setInnerHTML( |
| 346 "<select><option id=o1></option><option id=o2></option></select>"); | 361 "<select><option id=o1></option><option id=o2></option></select>"); |
| 347 document().view()->updateAllLifecyclePhases(); | 362 document().view()->updateAllLifecyclePhases(); |
| 348 HTMLSelectElement* select = | 363 HTMLSelectElement* select = |
| 349 toHTMLSelectElement(document().body()->firstChild()); | 364 toHTMLSelectElement(document().body()->firstChild()); |
| 350 EXPECT_EQ("o2", select->previousSelectableOption(nullptr)->fastGetAttribute( | 365 EXPECT_EQ("o2", |
| 351 HTMLNames::idAttr)); | 366 select->previousSelectableOption(nullptr)->fastGetAttribute( |
| 367 HTMLNames::idAttr)); |
| 352 } | 368 } |
| 353 { | 369 { |
| 354 document().documentElement()->setInnerHTML( | 370 document().documentElement()->setInnerHTML( |
| 355 "<select><option id=o1></option><option id=o2 " | 371 "<select><option id=o1></option><option id=o2 " |
| 356 "disabled></option></select>"); | 372 "disabled></option></select>"); |
| 357 document().view()->updateAllLifecyclePhases(); | 373 document().view()->updateAllLifecyclePhases(); |
| 358 HTMLSelectElement* select = | 374 HTMLSelectElement* select = |
| 359 toHTMLSelectElement(document().body()->firstChild()); | 375 toHTMLSelectElement(document().body()->firstChild()); |
| 360 EXPECT_EQ("o1", select->previousSelectableOption(nullptr)->fastGetAttribute( | 376 EXPECT_EQ("o1", |
| 361 HTMLNames::idAttr)); | 377 select->previousSelectableOption(nullptr)->fastGetAttribute( |
| 378 HTMLNames::idAttr)); |
| 362 } | 379 } |
| 363 { | 380 { |
| 364 document().documentElement()->setInnerHTML( | 381 document().documentElement()->setInnerHTML( |
| 365 "<select><option id=o1></option><option id=o2 " | 382 "<select><option id=o1></option><option id=o2 " |
| 366 "style='display:none'></option></select>"); | 383 "style='display:none'></option></select>"); |
| 367 document().view()->updateAllLifecyclePhases(); | 384 document().view()->updateAllLifecyclePhases(); |
| 368 HTMLSelectElement* select = | 385 HTMLSelectElement* select = |
| 369 toHTMLSelectElement(document().body()->firstChild()); | 386 toHTMLSelectElement(document().body()->firstChild()); |
| 370 EXPECT_EQ("o1", select->previousSelectableOption(nullptr)->fastGetAttribute( | 387 EXPECT_EQ("o1", |
| 371 HTMLNames::idAttr)); | 388 select->previousSelectableOption(nullptr)->fastGetAttribute( |
| 389 HTMLNames::idAttr)); |
| 372 } | 390 } |
| 373 { | 391 { |
| 374 document().documentElement()->setInnerHTML( | 392 document().documentElement()->setInnerHTML( |
| 375 "<select><optgroup><option id=o1></option><option " | 393 "<select><optgroup><option id=o1></option><option " |
| 376 "id=o2></option></optgroup></select>"); | 394 "id=o2></option></optgroup></select>"); |
| 377 document().view()->updateAllLifecyclePhases(); | 395 document().view()->updateAllLifecyclePhases(); |
| 378 HTMLSelectElement* select = | 396 HTMLSelectElement* select = |
| 379 toHTMLSelectElement(document().body()->firstChild()); | 397 toHTMLSelectElement(document().body()->firstChild()); |
| 380 EXPECT_EQ("o2", select->previousSelectableOption(nullptr)->fastGetAttribute( | 398 EXPECT_EQ("o2", |
| 381 HTMLNames::idAttr)); | 399 select->previousSelectableOption(nullptr)->fastGetAttribute( |
| 400 HTMLNames::idAttr)); |
| 382 } | 401 } |
| 383 { | 402 { |
| 384 document().documentElement()->setInnerHTML( | 403 document().documentElement()->setInnerHTML( |
| 385 "<select><option id=o1></option><option id=o2></option></select>"); | 404 "<select><option id=o1></option><option id=o2></option></select>"); |
| 386 document().view()->updateAllLifecyclePhases(); | 405 document().view()->updateAllLifecyclePhases(); |
| 387 HTMLSelectElement* select = | 406 HTMLSelectElement* select = |
| 388 toHTMLSelectElement(document().body()->firstChild()); | 407 toHTMLSelectElement(document().body()->firstChild()); |
| 389 HTMLOptionElement* option = | 408 HTMLOptionElement* option = |
| 390 toHTMLOptionElement(document().getElementById("o2")); | 409 toHTMLOptionElement(document().getElementById("o2")); |
| 391 EXPECT_EQ("o1", select->previousSelectableOption(option)->fastGetAttribute( | 410 EXPECT_EQ("o1", |
| 392 HTMLNames::idAttr)); | 411 select->previousSelectableOption(option)->fastGetAttribute( |
| 412 HTMLNames::idAttr)); |
| 393 | 413 |
| 394 EXPECT_EQ(nullptr, select->previousSelectableOption(toHTMLOptionElement( | 414 EXPECT_EQ(nullptr, |
| 395 document().getElementById("o1")))); | 415 select->previousSelectableOption( |
| 416 toHTMLOptionElement(document().getElementById("o1")))); |
| 396 } | 417 } |
| 397 { | 418 { |
| 398 document().documentElement()->setInnerHTML( | 419 document().documentElement()->setInnerHTML( |
| 399 "<select><option id=o1></option><optgroup><option " | 420 "<select><option id=o1></option><optgroup><option " |
| 400 "id=o2></option></optgroup></select>"); | 421 "id=o2></option></optgroup></select>"); |
| 401 document().view()->updateAllLifecyclePhases(); | 422 document().view()->updateAllLifecyclePhases(); |
| 402 HTMLSelectElement* select = | 423 HTMLSelectElement* select = |
| 403 toHTMLSelectElement(document().body()->firstChild()); | 424 toHTMLSelectElement(document().body()->firstChild()); |
| 404 HTMLOptionElement* option = | 425 HTMLOptionElement* option = |
| 405 toHTMLOptionElement(document().getElementById("o2")); | 426 toHTMLOptionElement(document().getElementById("o2")); |
| 406 EXPECT_EQ("o1", select->previousSelectableOption(option)->fastGetAttribute( | 427 EXPECT_EQ("o1", |
| 407 HTMLNames::idAttr)); | 428 select->previousSelectableOption(option)->fastGetAttribute( |
| 429 HTMLNames::idAttr)); |
| 408 } | 430 } |
| 409 } | 431 } |
| 410 | 432 |
| 411 TEST_F(HTMLSelectElementTest, ActiveSelectionEndAfterOptionRemoval) { | 433 TEST_F(HTMLSelectElementTest, ActiveSelectionEndAfterOptionRemoval) { |
| 412 document().documentElement()->setInnerHTML( | 434 document().documentElement()->setInnerHTML( |
| 413 "<select><optgroup><option selected>o1</option></optgroup></select>"); | 435 "<select><optgroup><option selected>o1</option></optgroup></select>"); |
| 414 document().view()->updateAllLifecyclePhases(); | 436 document().view()->updateAllLifecyclePhases(); |
| 415 HTMLSelectElement* select = | 437 HTMLSelectElement* select = |
| 416 toHTMLSelectElement(document().body()->firstChild()); | 438 toHTMLSelectElement(document().body()->firstChild()); |
| 417 HTMLOptionElement* option = | 439 HTMLOptionElement* option = |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 "<select><optgroup><option>sub1</option><option>sub2</option></" | 495 "<select><optgroup><option>sub1</option><option>sub2</option></" |
| 474 "optgroup></select>"); | 496 "optgroup></select>"); |
| 475 document().view()->updateAllLifecyclePhases(); | 497 document().view()->updateAllLifecyclePhases(); |
| 476 HTMLSelectElement* select = | 498 HTMLSelectElement* select = |
| 477 toHTMLSelectElement(document().body()->firstChild()); | 499 toHTMLSelectElement(document().body()->firstChild()); |
| 478 select->setInnerHTML(""); | 500 select->setInnerHTML(""); |
| 479 // PASS if setInnerHTML didn't have a check failure. | 501 // PASS if setInnerHTML didn't have a check failure. |
| 480 } | 502 } |
| 481 | 503 |
| 482 } // namespace blink | 504 } // namespace blink |
| OLD | NEW |