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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebFrameTest.cpp

Issue 2733993002: Make WebFrameTest cope with idle time spell checker (Closed)
Patch Set: Make WebFrameTest cope with idle time spell checker Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 #include "core/dom/Document.h" 47 #include "core/dom/Document.h"
48 #include "core/dom/DocumentUserGestureToken.h" 48 #include "core/dom/DocumentUserGestureToken.h"
49 #include "core/dom/Fullscreen.h" 49 #include "core/dom/Fullscreen.h"
50 #include "core/dom/NodeComputedStyle.h" 50 #include "core/dom/NodeComputedStyle.h"
51 #include "core/dom/Range.h" 51 #include "core/dom/Range.h"
52 #include "core/editing/Editor.h" 52 #include "core/editing/Editor.h"
53 #include "core/editing/EphemeralRange.h" 53 #include "core/editing/EphemeralRange.h"
54 #include "core/editing/FrameSelection.h" 54 #include "core/editing/FrameSelection.h"
55 #include "core/editing/VisiblePosition.h" 55 #include "core/editing/VisiblePosition.h"
56 #include "core/editing/markers/DocumentMarkerController.h" 56 #include "core/editing/markers/DocumentMarkerController.h"
57 #include "core/editing/spellcheck/IdleSpellCheckCallback.h"
57 #include "core/editing/spellcheck/SpellChecker.h" 58 #include "core/editing/spellcheck/SpellChecker.h"
58 #include "core/events/MouseEvent.h" 59 #include "core/events/MouseEvent.h"
59 #include "core/frame/FrameHost.h" 60 #include "core/frame/FrameHost.h"
60 #include "core/frame/FrameView.h" 61 #include "core/frame/FrameView.h"
61 #include "core/frame/LocalFrame.h" 62 #include "core/frame/LocalFrame.h"
62 #include "core/frame/RemoteFrame.h" 63 #include "core/frame/RemoteFrame.h"
63 #include "core/frame/Settings.h" 64 #include "core/frame/Settings.h"
64 #include "core/frame/VisualViewport.h" 65 #include "core/frame/VisualViewport.h"
65 #include "core/html/HTMLBodyElement.h" 66 #include "core/html/HTMLBodyElement.h"
66 #include "core/html/HTMLFormElement.h" 67 #include "core/html/HTMLFormElement.h"
(...skipping 6202 matching lines...) Expand 10 before | Expand all | Expand 10 after
6269 } 6270 }
6270 int numberOfTimesChecked() const { return m_numberOfTimesChecked; } 6271 int numberOfTimesChecked() const { return m_numberOfTimesChecked; }
6271 6272
6272 private: 6273 private:
6273 int m_numberOfTimesChecked; 6274 int m_numberOfTimesChecked;
6274 }; 6275 };
6275 6276
6276 TEST_P(ParameterizedWebFrameTest, ReplaceMisspelledRange) { 6277 TEST_P(ParameterizedWebFrameTest, ReplaceMisspelledRange) {
6277 registerMockedHttpURLLoad("spell.html"); 6278 registerMockedHttpURLLoad("spell.html");
6278 FrameTestHelpers::WebViewHelper webViewHelper; 6279 FrameTestHelpers::WebViewHelper webViewHelper;
6279 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 6280 initializeTextSelectionWebView(m_baseURL + "spell.html", &webViewHelper);
6280 SpellCheckClient spellcheck; 6281 SpellCheckClient spellcheck;
6281 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 6282 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
6282 6283
6283 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 6284 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
6284 Document* document = frame->frame()->document(); 6285 Document* document = frame->frame()->document();
6285 Element* element = document->getElementById("data"); 6286 Element* element = document->getElementById("data");
6286 6287
6287 webViewHelper.webView()->settings()->setEditingBehavior( 6288 webViewHelper.webView()->settings()->setEditingBehavior(
6288 WebSettings::EditingBehaviorWin); 6289 WebSettings::EditingBehaviorWin);
6289 6290
6290 element->focus(); 6291 element->focus();
6291 NonThrowableExceptionState exceptionState; 6292 NonThrowableExceptionState exceptionState;
6292 document->execCommand("InsertText", false, "_wellcome_.", exceptionState); 6293 document->execCommand("InsertText", false, "_wellcome_.", exceptionState);
6293 EXPECT_FALSE(exceptionState.hadException()); 6294 EXPECT_FALSE(exceptionState.hadException());
6294 6295
6296 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) {
6297 document->frame()
6298 ->spellChecker()
6299 .idleSpellCheckCallback()
6300 .forceInvocationForTesting();
6301 }
6302
6295 const int allTextBeginOffset = 0; 6303 const int allTextBeginOffset = 0;
6296 const int allTextLength = 11; 6304 const int allTextLength = 11;
6297 frame->selectRange(WebRange(allTextBeginOffset, allTextLength)); 6305 frame->selectRange(WebRange(allTextBeginOffset, allTextLength));
6298 EphemeralRange selectionRange = 6306 EphemeralRange selectionRange =
6299 frame->frame() 6307 frame->frame()
6300 ->selection() 6308 ->selection()
6301 .computeVisibleSelectionInDOMTreeDeprecated() 6309 .computeVisibleSelectionInDOMTreeDeprecated()
6302 .toNormalizedEphemeralRange(); 6310 .toNormalizedEphemeralRange();
6303 6311
6304 EXPECT_EQ(1, spellcheck.numberOfTimesChecked()); 6312 EXPECT_EQ(1, spellcheck.numberOfTimesChecked());
6305 EXPECT_EQ(1U, document->markers() 6313 EXPECT_EQ(1U, document->markers()
6306 .markersInRange(selectionRange, DocumentMarker::Spelling) 6314 .markersInRange(selectionRange, DocumentMarker::Spelling)
6307 .size()); 6315 .size());
6308 6316
6309 frame->replaceMisspelledRange("welcome"); 6317 frame->replaceMisspelledRange("welcome");
6310 EXPECT_EQ("_welcome_.", 6318 EXPECT_EQ("_welcome_.",
6311 WebFrameContentDumper::dumpWebViewAsText( 6319 WebFrameContentDumper::dumpWebViewAsText(
6312 webViewHelper.webView(), std::numeric_limits<size_t>::max()) 6320 webViewHelper.webView(), std::numeric_limits<size_t>::max())
6313 .utf8()); 6321 .utf8());
6314 } 6322 }
6315 6323
6316 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkers) { 6324 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkers) {
6317 registerMockedHttpURLLoad("spell.html"); 6325 registerMockedHttpURLLoad("spell.html");
6318 FrameTestHelpers::WebViewHelper webViewHelper; 6326 FrameTestHelpers::WebViewHelper webViewHelper;
6319 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 6327 initializeTextSelectionWebView(m_baseURL + "spell.html", &webViewHelper);
6320 SpellCheckClient spellcheck; 6328 SpellCheckClient spellcheck;
6321 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 6329 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
6322 6330
6323 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 6331 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
6324 Document* document = frame->frame()->document(); 6332 Document* document = frame->frame()->document();
6325 Element* element = document->getElementById("data"); 6333 Element* element = document->getElementById("data");
6326 6334
6327 webViewHelper.webView()->settings()->setEditingBehavior( 6335 webViewHelper.webView()->settings()->setEditingBehavior(
6328 WebSettings::EditingBehaviorWin); 6336 WebSettings::EditingBehaviorWin);
6329 6337
6330 element->focus(); 6338 element->focus();
6331 NonThrowableExceptionState exceptionState; 6339 NonThrowableExceptionState exceptionState;
6332 document->execCommand("InsertText", false, "_wellcome_.", exceptionState); 6340 document->execCommand("InsertText", false, "_wellcome_.", exceptionState);
6333 EXPECT_FALSE(exceptionState.hadException()); 6341 EXPECT_FALSE(exceptionState.hadException());
6334 6342
6343 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) {
6344 document->frame()
6345 ->spellChecker()
6346 .idleSpellCheckCallback()
6347 .forceInvocationForTesting();
6348 }
6349
6335 frame->removeSpellingMarkers(); 6350 frame->removeSpellingMarkers();
6336 6351
6337 const int allTextBeginOffset = 0; 6352 const int allTextBeginOffset = 0;
6338 const int allTextLength = 11; 6353 const int allTextLength = 11;
6339 frame->selectRange(WebRange(allTextBeginOffset, allTextLength)); 6354 frame->selectRange(WebRange(allTextBeginOffset, allTextLength));
6340 EphemeralRange selectionRange = 6355 EphemeralRange selectionRange =
6341 frame->frame() 6356 frame->frame()
6342 ->selection() 6357 ->selection()
6343 .computeVisibleSelectionInDOMTreeDeprecated() 6358 .computeVisibleSelectionInDOMTreeDeprecated()
6344 .toNormalizedEphemeralRange(); 6359 .toNormalizedEphemeralRange();
6345 6360
6346 EXPECT_EQ(0U, document->markers() 6361 EXPECT_EQ(0U, document->markers()
6347 .markersInRange(selectionRange, DocumentMarker::Spelling) 6362 .markersInRange(selectionRange, DocumentMarker::Spelling)
6348 .size()); 6363 .size());
6349 } 6364 }
6350 6365
6351 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkersUnderWords) { 6366 TEST_P(ParameterizedWebFrameTest, RemoveSpellingMarkersUnderWords) {
6352 registerMockedHttpURLLoad("spell.html"); 6367 registerMockedHttpURLLoad("spell.html");
6353 FrameTestHelpers::WebViewHelper webViewHelper; 6368 FrameTestHelpers::WebViewHelper webViewHelper;
6354 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 6369 initializeTextSelectionWebView(m_baseURL + "spell.html", &webViewHelper);
6355 SpellCheckClient spellcheck; 6370 SpellCheckClient spellcheck;
6356 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 6371 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
6357 6372
6358 LocalFrame* frame = webViewHelper.webView()->mainFrameImpl()->frame(); 6373 LocalFrame* frame = webViewHelper.webView()->mainFrameImpl()->frame();
6359 Document* document = frame->document(); 6374 Document* document = frame->document();
6360 Element* element = document->getElementById("data"); 6375 Element* element = document->getElementById("data");
6361 6376
6362 webViewHelper.webView()->settings()->setEditingBehavior( 6377 webViewHelper.webView()->settings()->setEditingBehavior(
6363 WebSettings::EditingBehaviorWin); 6378 WebSettings::EditingBehaviorWin);
6364 6379
6365 element->focus(); 6380 element->focus();
6366 NonThrowableExceptionState exceptionState; 6381 NonThrowableExceptionState exceptionState;
6367 document->execCommand("InsertText", false, " wellcome ", exceptionState); 6382 document->execCommand("InsertText", false, " wellcome ", exceptionState);
6368 EXPECT_FALSE(exceptionState.hadException()); 6383 EXPECT_FALSE(exceptionState.hadException());
6369 6384
6385 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled())
6386 frame->spellChecker().idleSpellCheckCallback().forceInvocationForTesting();
6387
6370 WebVector<unsigned> offsets1; 6388 WebVector<unsigned> offsets1;
6371 webViewHelper.webView()->spellingMarkerOffsetsForTest(&offsets1); 6389 webViewHelper.webView()->spellingMarkerOffsetsForTest(&offsets1);
6372 EXPECT_EQ(1U, offsets1.size()); 6390 EXPECT_EQ(1U, offsets1.size());
6373 6391
6374 Vector<String> words; 6392 Vector<String> words;
6375 words.push_back("wellcome"); 6393 words.push_back("wellcome");
6376 frame->removeSpellingMarkersUnderWords(words); 6394 frame->removeSpellingMarkersUnderWords(words);
6377 6395
6378 WebVector<unsigned> offsets2; 6396 WebVector<unsigned> offsets2;
6379 webViewHelper.webView()->spellingMarkerOffsetsForTest(&offsets2); 6397 webViewHelper.webView()->spellingMarkerOffsetsForTest(&offsets2);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
6417 m_completion->didFinishCheckingText(results); 6435 m_completion->didFinishCheckingText(results);
6418 m_completion = 0; 6436 m_completion = 0;
6419 } 6437 }
6420 6438
6421 WebTextCheckingCompletion* m_completion; 6439 WebTextCheckingCompletion* m_completion;
6422 }; 6440 };
6423 6441
6424 TEST_P(ParameterizedWebFrameTest, SlowSpellcheckMarkerPosition) { 6442 TEST_P(ParameterizedWebFrameTest, SlowSpellcheckMarkerPosition) {
6425 registerMockedHttpURLLoad("spell.html"); 6443 registerMockedHttpURLLoad("spell.html");
6426 FrameTestHelpers::WebViewHelper webViewHelper; 6444 FrameTestHelpers::WebViewHelper webViewHelper;
6427 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 6445 initializeTextSelectionWebView(m_baseURL + "spell.html", &webViewHelper);
6428 6446
6429 StubbornSpellCheckClient spellcheck; 6447 StubbornSpellCheckClient spellcheck;
6430 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 6448 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
6431 6449
6432 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 6450 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
6433 Document* document = frame->frame()->document(); 6451 Document* document = frame->frame()->document();
6434 Element* element = document->getElementById("data"); 6452 Element* element = document->getElementById("data");
6435 6453
6436 webViewHelper.webView()->settings()->setEditingBehavior( 6454 webViewHelper.webView()->settings()->setEditingBehavior(
6437 WebSettings::EditingBehaviorWin); 6455 WebSettings::EditingBehaviorWin);
6438 6456
6439 element->focus(); 6457 element->focus();
6440 NonThrowableExceptionState exceptionState; 6458 NonThrowableExceptionState exceptionState;
6441 document->execCommand("InsertText", false, "wellcome ", exceptionState); 6459 document->execCommand("InsertText", false, "wellcome ", exceptionState);
6442 EXPECT_FALSE(exceptionState.hadException()); 6460 EXPECT_FALSE(exceptionState.hadException());
6443 document->execCommand("InsertText", false, "he", exceptionState); 6461 document->execCommand("InsertText", false, "he", exceptionState);
6444 EXPECT_FALSE(exceptionState.hadException()); 6462 EXPECT_FALSE(exceptionState.hadException());
6445 6463
6464 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) {
6465 document->frame()
6466 ->spellChecker()
6467 .idleSpellCheckCallback()
6468 .forceInvocationForTesting();
6469 }
6470
6446 spellcheck.kick(); 6471 spellcheck.kick();
6447 6472
6448 WebVector<unsigned> offsets; 6473 WebVector<unsigned> offsets;
6449 webViewHelper.webView()->spellingMarkerOffsetsForTest(&offsets); 6474 webViewHelper.webView()->spellingMarkerOffsetsForTest(&offsets);
6450 EXPECT_EQ(0U, offsets.size()); 6475 EXPECT_EQ(0U, offsets.size());
6451 } 6476 }
6452 6477
6453 // This test verifies that cancelling spelling request does not cause a 6478 // This test verifies that cancelling spelling request does not cause a
6454 // write-after-free when there's no spellcheck client set. 6479 // write-after-free when there's no spellcheck client set.
6455 TEST_P(ParameterizedWebFrameTest, CancelSpellingRequestCrash) { 6480 TEST_P(ParameterizedWebFrameTest, CancelSpellingRequestCrash) {
6481 // The relevant code paths are obsolete with idle time spell checker.
6482 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled())
6483 return;
6484
6456 registerMockedHttpURLLoad("spell.html"); 6485 registerMockedHttpURLLoad("spell.html");
6457 FrameTestHelpers::WebViewHelper webViewHelper; 6486 FrameTestHelpers::WebViewHelper webViewHelper;
6458 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 6487 webViewHelper.initializeAndLoad(m_baseURL + "spell.html");
6459 webViewHelper.webView()->setSpellCheckClient(0); 6488 webViewHelper.webView()->setSpellCheckClient(0);
6460 6489
6461 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 6490 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
6462 Document* document = frame->frame()->document(); 6491 Document* document = frame->frame()->document();
6463 Element* element = document->getElementById("data"); 6492 Element* element = document->getElementById("data");
6464 6493
6465 webViewHelper.webView()->settings()->setEditingBehavior( 6494 webViewHelper.webView()->settings()->setEditingBehavior(
6466 WebSettings::EditingBehaviorWin); 6495 WebSettings::EditingBehaviorWin);
6467 6496
6468 element->focus(); 6497 element->focus();
6469 frame->frame()->editor().replaceSelectionWithText( 6498 frame->frame()->editor().replaceSelectionWithText(
6470 "A", false, false, InputEvent::InputType::InsertReplacementText); 6499 "A", false, false, InputEvent::InputType::InsertReplacementText);
6471 frame->frame()->spellChecker().cancelCheck(); 6500 frame->frame()->spellChecker().cancelCheck();
6472 } 6501 }
6473 6502
6474 TEST_P(ParameterizedWebFrameTest, SpellcheckResultErasesMarkers) { 6503 TEST_P(ParameterizedWebFrameTest, SpellcheckResultErasesMarkers) {
6475 registerMockedHttpURLLoad("spell.html"); 6504 registerMockedHttpURLLoad("spell.html");
6476 FrameTestHelpers::WebViewHelper webViewHelper; 6505 FrameTestHelpers::WebViewHelper webViewHelper;
6477 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 6506 initializeTextSelectionWebView(m_baseURL + "spell.html", &webViewHelper);
6478 6507
6479 StubbornSpellCheckClient spellcheck; 6508 StubbornSpellCheckClient spellcheck;
6480 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 6509 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
6481 6510
6482 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 6511 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
6483 Document* document = frame->frame()->document(); 6512 Document* document = frame->frame()->document();
6484 Element* element = document->getElementById("data"); 6513 Element* element = document->getElementById("data");
6485 6514
6486 webViewHelper.webView()->settings()->setEditingBehavior( 6515 webViewHelper.webView()->settings()->setEditingBehavior(
6487 WebSettings::EditingBehaviorWin); 6516 WebSettings::EditingBehaviorWin);
6488 6517
6489 element->focus(); 6518 element->focus();
6490 NonThrowableExceptionState exceptionState; 6519 NonThrowableExceptionState exceptionState;
6491 document->execCommand("InsertText", false, "welcome ", exceptionState); 6520 document->execCommand("InsertText", false, "welcome ", exceptionState);
6492 6521
6522 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) {
6523 document->frame()
6524 ->spellChecker()
6525 .idleSpellCheckCallback()
6526 .forceInvocationForTesting();
6527 }
6528
6493 document->updateStyleAndLayout(); 6529 document->updateStyleAndLayout();
6494 6530
6495 EXPECT_FALSE(exceptionState.hadException()); 6531 EXPECT_FALSE(exceptionState.hadException());
6496 auto range = EphemeralRange::rangeOfContents(*element); 6532 auto range = EphemeralRange::rangeOfContents(*element);
6497 document->markers().addMarker(range.startPosition(), range.endPosition(), 6533 document->markers().addMarker(range.startPosition(), range.endPosition(),
6498 DocumentMarker::Spelling); 6534 DocumentMarker::Spelling);
6499 document->markers().addMarker(range.startPosition(), range.endPosition(), 6535 document->markers().addMarker(range.startPosition(), range.endPosition(),
6500 DocumentMarker::Grammar); 6536 DocumentMarker::Grammar);
6501 EXPECT_EQ(2U, document->markers().markers().size()); 6537 EXPECT_EQ(2U, document->markers().markers().size());
6502 6538
6503 spellcheck.kickNoResults(); 6539 spellcheck.kickNoResults();
6504 EXPECT_EQ(0U, document->markers().markers().size()); 6540 EXPECT_EQ(0U, document->markers().markers().size());
6505 } 6541 }
6506 6542
6507 TEST_P(ParameterizedWebFrameTest, SpellcheckResultsSavedInDocument) { 6543 TEST_P(ParameterizedWebFrameTest, SpellcheckResultsSavedInDocument) {
6508 registerMockedHttpURLLoad("spell.html"); 6544 registerMockedHttpURLLoad("spell.html");
6509 FrameTestHelpers::WebViewHelper webViewHelper; 6545 FrameTestHelpers::WebViewHelper webViewHelper;
6510 webViewHelper.initializeAndLoad(m_baseURL + "spell.html"); 6546 initializeTextSelectionWebView(m_baseURL + "spell.html", &webViewHelper);
6511 6547
6512 StubbornSpellCheckClient spellcheck; 6548 StubbornSpellCheckClient spellcheck;
6513 webViewHelper.webView()->setSpellCheckClient(&spellcheck); 6549 webViewHelper.webView()->setSpellCheckClient(&spellcheck);
6514 6550
6515 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl(); 6551 WebLocalFrameImpl* frame = webViewHelper.webView()->mainFrameImpl();
6516 Document* document = frame->frame()->document(); 6552 Document* document = frame->frame()->document();
6517 Element* element = document->getElementById("data"); 6553 Element* element = document->getElementById("data");
6518 6554
6519 webViewHelper.webView()->settings()->setEditingBehavior( 6555 webViewHelper.webView()->settings()->setEditingBehavior(
6520 WebSettings::EditingBehaviorWin); 6556 WebSettings::EditingBehaviorWin);
6521 6557
6522 element->focus(); 6558 element->focus();
6523 NonThrowableExceptionState exceptionState; 6559 NonThrowableExceptionState exceptionState;
6524 document->execCommand("InsertText", false, "wellcome ", exceptionState); 6560 document->execCommand("InsertText", false, "wellcome ", exceptionState);
6525 EXPECT_FALSE(exceptionState.hadException()); 6561 EXPECT_FALSE(exceptionState.hadException());
6526 6562
6563 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) {
6564 document->frame()
6565 ->spellChecker()
6566 .idleSpellCheckCallback()
6567 .forceInvocationForTesting();
6568 }
6569
6527 spellcheck.kick(); 6570 spellcheck.kick();
6528 ASSERT_EQ(1U, document->markers().markers().size()); 6571 ASSERT_EQ(1U, document->markers().markers().size());
6529 ASSERT_NE(static_cast<DocumentMarker*>(0), document->markers().markers()[0]); 6572 ASSERT_NE(static_cast<DocumentMarker*>(0), document->markers().markers()[0]);
6530 EXPECT_EQ(DocumentMarker::Spelling, document->markers().markers()[0]->type()); 6573 EXPECT_EQ(DocumentMarker::Spelling, document->markers().markers()[0]->type());
6531 6574
6532 document->execCommand("InsertText", false, "wellcome ", exceptionState); 6575 document->execCommand("InsertText", false, "wellcome ", exceptionState);
6533 EXPECT_FALSE(exceptionState.hadException()); 6576 EXPECT_FALSE(exceptionState.hadException());
6534 6577
6578 if (RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) {
6579 document->frame()
6580 ->spellChecker()
6581 .idleSpellCheckCallback()
6582 .forceInvocationForTesting();
6583 }
6584
6535 spellcheck.kickGrammar(); 6585 spellcheck.kickGrammar();
6536 ASSERT_EQ(1U, document->markers().markers().size()); 6586 ASSERT_EQ(1U, document->markers().markers().size());
6537 ASSERT_NE(static_cast<DocumentMarker*>(0), document->markers().markers()[0]); 6587 ASSERT_NE(static_cast<DocumentMarker*>(0), document->markers().markers()[0]);
6538 EXPECT_EQ(DocumentMarker::Grammar, document->markers().markers()[0]->type()); 6588 EXPECT_EQ(DocumentMarker::Grammar, document->markers().markers()[0]->type());
6539
6540 document->execCommand("InsertText", false, "wellcome ", exceptionState);
6541 EXPECT_FALSE(exceptionState.hadException());
6542 } 6589 }
6543 6590
6544 class TestAccessInitialDocumentWebFrameClient 6591 class TestAccessInitialDocumentWebFrameClient
6545 : public FrameTestHelpers::TestWebFrameClient { 6592 : public FrameTestHelpers::TestWebFrameClient {
6546 public: 6593 public:
6547 TestAccessInitialDocumentWebFrameClient() 6594 TestAccessInitialDocumentWebFrameClient()
6548 : m_didAccessInitialDocument(false) {} 6595 : m_didAccessInitialDocument(false) {}
6549 6596
6550 virtual void didAccessInitialDocument() { m_didAccessInitialDocument = true; } 6597 virtual void didAccessInitialDocument() { m_didAccessInitialDocument = true; }
6551 6598
(...skipping 4810 matching lines...) Expand 10 before | Expand all | Expand 10 after
11362 FrameTestHelpers::WebViewHelper openerHelper; 11409 FrameTestHelpers::WebViewHelper openerHelper;
11363 openerHelper.initialize(false, nullptr, &openerWebViewClient); 11410 openerHelper.initialize(false, nullptr, &openerWebViewClient);
11364 FrameTestHelpers::WebViewHelper helper; 11411 FrameTestHelpers::WebViewHelper helper;
11365 helper.initializeWithOpener(openerHelper.webView()->mainFrame()); 11412 helper.initializeWithOpener(openerHelper.webView()->mainFrame());
11366 11413
11367 openerHelper.reset(); 11414 openerHelper.reset();
11368 EXPECT_EQ(nullptr, helper.webView()->mainFrameImpl()->opener()); 11415 EXPECT_EQ(nullptr, helper.webView()->mainFrameImpl()->opener());
11369 } 11416 }
11370 11417
11371 } // namespace blink 11418 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698