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

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

Issue 2553923002: Remove deprecated ReplicaInputConnection (Closed)
Patch Set: Created 4 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 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 3465 matching lines...) Expand 10 before | Expand all | Expand 10 after
3476 3476
3477 // For oilpan we have to force a GC to ensure the event handlers have been 3477 // For oilpan we have to force a GC to ensure the event handlers have been
3478 // removed when checking below. We do a precise GC (collectAllGarbage does not 3478 // removed when checking below. We do a precise GC (collectAllGarbage does not
3479 // scan the stack) to ensure the div element dies. This is also why the 3479 // scan the stack) to ensure the div element dies. This is also why the
3480 // Document is in a Persistent since we want that to stay around. 3480 // Document is in a Persistent since we want that to stay around.
3481 ThreadState::current()->collectAllGarbage(); 3481 ThreadState::current()->collectAllGarbage();
3482 3482
3483 EXPECT_FALSE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent)); 3483 EXPECT_FALSE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent));
3484 } 3484 }
3485 3485
3486 class NonUserInputTextUpdateWebWidgetClient
3487 : public FrameTestHelpers::TestWebWidgetClient {
3488 public:
3489 NonUserInputTextUpdateWebWidgetClient() : m_textIsUpdated(false) {}
3490
3491 // WebWidgetClient methods
3492 void didUpdateTextOfFocusedElementByNonUserInput() override {
3493 m_textIsUpdated = true;
3494 }
3495
3496 void reset() { m_textIsUpdated = false; }
3497
3498 bool textIsUpdated() const { return m_textIsUpdated; }
3499
3500 private:
3501 int m_textIsUpdated;
3502 };
3503
3504 // This test verifies the text input flags are correctly exposed to script. 3486 // This test verifies the text input flags are correctly exposed to script.
3505 TEST_P(WebViewTest, TextInputFlags) { 3487 TEST_P(WebViewTest, TextInputFlags) {
3506 std::string url = m_baseURL + "text_input_flags.html"; 3488 std::string url = m_baseURL + "text_input_flags.html";
3507 URLTestHelpers::registerMockedURLLoad(toKURL(url), "text_input_flags.html"); 3489 URLTestHelpers::registerMockedURLLoad(toKURL(url), "text_input_flags.html");
3508 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); 3490 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true);
3509 webViewImpl->setInitialFocus(false); 3491 webViewImpl->setInitialFocus(false);
3510 3492
3511 WebLocalFrameImpl* frame = webViewImpl->mainFrameImpl(); 3493 WebLocalFrameImpl* frame = webViewImpl->mainFrameImpl();
3512 Document* document = frame->frame()->document(); 3494 Document* document = frame->frame()->document();
3513 3495
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3551 EXPECT_EQ(WebTextInputFlagAutocapitalizeSentences, info3.flags); 3533 EXPECT_EQ(WebTextInputFlagAutocapitalizeSentences, info3.flags);
3552 3534
3553 // (C) Verifies the WebTextInputInfo's don't equal. 3535 // (C) Verifies the WebTextInputInfo's don't equal.
3554 EXPECT_FALSE(info1.equals(info2)); 3536 EXPECT_FALSE(info1.equals(info2));
3555 EXPECT_FALSE(info2.equals(info3)); 3537 EXPECT_FALSE(info2.equals(info3));
3556 3538
3557 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient. 3539 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient.
3558 m_webViewHelper.reset(); 3540 m_webViewHelper.reset();
3559 } 3541 }
3560 3542
3561 // This test verifies that
3562 // WebWidgetClient::didUpdateTextOfFocusedElementByNonUserInput is called iff
3563 // value of a focused element is modified via script.
3564 TEST_P(WebViewTest, NonUserInputTextUpdate) {
3565 NonUserInputTextUpdateWebWidgetClient client;
3566 std::string url = m_baseURL + "non_user_input_text_update.html";
3567 URLTestHelpers::registerMockedURLLoad(toKURL(url),
3568 "non_user_input_text_update.html");
3569 WebViewImpl* webViewImpl =
3570 m_webViewHelper.initializeAndLoad(url, true, nullptr, nullptr, &client);
3571 webViewImpl->setInitialFocus(false);
3572
3573 WebLocalFrameImpl* frame = webViewImpl->mainFrameImpl();
3574 Document* document = frame->frame()->document();
3575 WebInputMethodController* activeInputMethodController =
3576 frame->frameWidget()->getActiveWebInputMethodController();
3577
3578 // (A) <input>
3579 // (A.1) Focused and value is changed by script.
3580 client.reset();
3581 EXPECT_FALSE(client.textIsUpdated());
3582
3583 HTMLInputElement* inputElement =
3584 toHTMLInputElement(document->getElementById("input"));
3585 document->setFocusedElement(
3586 inputElement,
3587 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr));
3588 webViewImpl->setFocus(true);
3589 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(inputElement));
3590
3591 // Emulate value change from script.
3592 inputElement->setValue("testA");
3593 EXPECT_TRUE(client.textIsUpdated());
3594 WebTextInputInfo info = webViewImpl->textInputInfo();
3595 EXPECT_EQ("testA", std::string(info.value.utf8().data()));
3596
3597 // (A.2) Focused and user input modifies value.
3598 client.reset();
3599 EXPECT_FALSE(client.textIsUpdated());
3600
3601 WebVector<WebCompositionUnderline> emptyUnderlines;
3602 activeInputMethodController->setComposition(WebString::fromUTF8("2"),
3603 emptyUnderlines, 1, 1);
3604 activeInputMethodController->finishComposingText(
3605 WebInputMethodController::KeepSelection);
3606 EXPECT_FALSE(client.textIsUpdated());
3607 info = webViewImpl->textInputInfo();
3608 EXPECT_EQ("testA2", std::string(info.value.utf8().data()));
3609
3610 // (A.3) Unfocused and value is changed by script.
3611 client.reset();
3612 EXPECT_FALSE(client.textIsUpdated());
3613 document->clearFocusedElement();
3614 webViewImpl->setFocus(false);
3615 EXPECT_NE(document->focusedElement(), static_cast<Element*>(inputElement));
3616 inputElement->setValue("testA3");
3617 EXPECT_FALSE(client.textIsUpdated());
3618
3619 // (B) <textarea>
3620 // (B.1) Focused and value is changed by script.
3621 client.reset();
3622 EXPECT_FALSE(client.textIsUpdated());
3623 HTMLTextAreaElement* textAreaElement =
3624 toHTMLTextAreaElement(document->getElementById("textarea"));
3625 document->setFocusedElement(
3626 textAreaElement,
3627 FocusParams(SelectionBehaviorOnFocus::None, WebFocusTypeNone, nullptr));
3628 webViewImpl->setFocus(true);
3629 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(textAreaElement));
3630 textAreaElement->setValue("testB");
3631 EXPECT_TRUE(client.textIsUpdated());
3632 info = webViewImpl->textInputInfo();
3633 EXPECT_EQ("testB", std::string(info.value.utf8().data()));
3634
3635 // (B.2) Focused and user input modifies value.
3636 client.reset();
3637 EXPECT_FALSE(client.textIsUpdated());
3638 activeInputMethodController->setComposition(WebString::fromUTF8("2"),
3639 emptyUnderlines, 1, 1);
3640 activeInputMethodController->finishComposingText(
3641 WebInputMethodController::KeepSelection);
3642 info = webViewImpl->textInputInfo();
3643 EXPECT_EQ("testB2", std::string(info.value.utf8().data()));
3644
3645 // (B.3) Unfocused and value is changed by script.
3646 client.reset();
3647 EXPECT_FALSE(client.textIsUpdated());
3648 document->clearFocusedElement();
3649 webViewImpl->setFocus(false);
3650 EXPECT_NE(document->focusedElement(), static_cast<Element*>(textAreaElement));
3651 inputElement->setValue("testB3");
3652 EXPECT_FALSE(client.textIsUpdated());
3653
3654 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient.
3655 m_webViewHelper.reset();
3656 }
3657
3658 // Check that the WebAutofillClient is correctly notified about first user 3543 // Check that the WebAutofillClient is correctly notified about first user
3659 // gestures after load, following various input events. 3544 // gestures after load, following various input events.
3660 TEST_P(WebViewTest, FirstUserGestureObservedKeyEvent) { 3545 TEST_P(WebViewTest, FirstUserGestureObservedKeyEvent) {
3661 URLTestHelpers::registerMockedURLFromBaseURL( 3546 URLTestHelpers::registerMockedURLFromBaseURL(
3662 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html")); 3547 WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("form.html"));
3663 MockAutofillClient client; 3548 MockAutofillClient client;
3664 WebViewImpl* webView = 3549 WebViewImpl* webView =
3665 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true); 3550 m_webViewHelper.initializeAndLoad(m_baseURL + "form.html", true);
3666 WebLocalFrameImpl* frame = webView->mainFrameImpl(); 3551 WebLocalFrameImpl* frame = webView->mainFrameImpl();
3667 frame->setAutofillClient(&client); 3552 frame->setAutofillClient(&client);
(...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after
4360 .translate(50, 55) 4245 .translate(50, 55)
4361 .scale(1. / 2.f); 4246 .scale(1. / 2.f);
4362 EXPECT_EQ(expectedMatrix, 4247 EXPECT_EQ(expectedMatrix,
4363 webViewImpl->getDeviceEmulationTransformForTesting()); 4248 webViewImpl->getDeviceEmulationTransformForTesting());
4364 // visibleContentRect doesn't change. 4249 // visibleContentRect doesn't change.
4365 EXPECT_EQ(IntRect(50, 55, 50, 75), 4250 EXPECT_EQ(IntRect(50, 55, 50, 75),
4366 *devToolsEmulator->visibleContentRectForPainting()); 4251 *devToolsEmulator->visibleContentRectForPainting());
4367 } 4252 }
4368 4253
4369 } // namespace blink 4254 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/ChromeClientImpl.cpp ('k') | third_party/WebKit/public/web/WebWidgetClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698