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

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

Issue 1605863002: Restart search in page when new text is found. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 10 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
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 3551 matching lines...) Expand 10 before | Expand all | Expand 10 after
3562 { 3562 {
3563 registerMockedHttpURLLoad("find.html"); 3563 registerMockedHttpURLLoad("find.html");
3564 FrameTestHelpers::WebViewHelper webViewHelper(this); 3564 FrameTestHelpers::WebViewHelper webViewHelper(this);
3565 webViewHelper.initializeAndLoad(m_baseURL + "find.html"); 3565 webViewHelper.initializeAndLoad(m_baseURL + "find.html");
3566 ASSERT_TRUE(webViewHelper.webView()->mainFrame()->isWebLocalFrame()); 3566 ASSERT_TRUE(webViewHelper.webView()->mainFrame()->isWebLocalFrame());
3567 WebLocalFrame* frame = webViewHelper.webView()->mainFrame()->toWebLocalFrame (); 3567 WebLocalFrame* frame = webViewHelper.webView()->mainFrame()->toWebLocalFrame ();
3568 const int findIdentifier = 12345; 3568 const int findIdentifier = 12345;
3569 WebFindOptions options; 3569 WebFindOptions options;
3570 3570
3571 // Find in a <div> element. 3571 // Find in a <div> element.
3572 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false, 0)); 3572 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar1"), options , false, 0, nullptr));
3573 frame->stopFinding(false); 3573 frame->stopFinding(false);
3574 WebRange range = frame->selectionRange(); 3574 WebRange range = frame->selectionRange();
3575 EXPECT_EQ(5, range.startOffset()); 3575 EXPECT_EQ(5, range.startOffset());
3576 EXPECT_EQ(9, range.endOffset()); 3576 EXPECT_EQ(9, range.endOffset());
3577 EXPECT_TRUE(frame->document().focusedElement().isNull()); 3577 EXPECT_TRUE(frame->document().focusedElement().isNull());
3578 3578
3579 // Find in an <input> value. 3579 // Find in an <input> value.
3580 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar2"), options , false, 0)); 3580 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar2"), options , false, 0, nullptr));
3581 // Confirm stopFinding(false) sets the selection on the found text. 3581 // Confirm stopFinding(false) sets the selection on the found text.
3582 frame->stopFinding(false); 3582 frame->stopFinding(false);
3583 range = frame->selectionRange(); 3583 range = frame->selectionRange();
3584 ASSERT_FALSE(range.isNull()); 3584 ASSERT_FALSE(range.isNull());
3585 EXPECT_EQ(5, range.startOffset()); 3585 EXPECT_EQ(5, range.startOffset());
3586 EXPECT_EQ(9, range.endOffset()); 3586 EXPECT_EQ(9, range.endOffset());
3587 EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("input")); 3587 EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("input"));
3588 3588
3589 // Find in a <textarea> content. 3589 // Find in a <textarea> content.
3590 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar3"), options , false, 0)); 3590 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar3"), options , false, 0, nullptr));
3591 // Confirm stopFinding(false) sets the selection on the found text. 3591 // Confirm stopFinding(false) sets the selection on the found text.
3592 frame->stopFinding(false); 3592 frame->stopFinding(false);
3593 range = frame->selectionRange(); 3593 range = frame->selectionRange();
3594 ASSERT_FALSE(range.isNull()); 3594 ASSERT_FALSE(range.isNull());
3595 EXPECT_EQ(5, range.startOffset()); 3595 EXPECT_EQ(5, range.startOffset());
3596 EXPECT_EQ(9, range.endOffset()); 3596 EXPECT_EQ(9, range.endOffset());
3597 EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("textarea")); 3597 EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("textarea"));
3598 3598
3599 // Find in a contentEditable element. 3599 // Find in a contentEditable element.
3600 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar4"), options , false, 0)); 3600 EXPECT_TRUE(frame->find(findIdentifier, WebString::fromUTF8("bar4"), options , false, 0, nullptr));
3601 // Confirm stopFinding(false) sets the selection on the found text. 3601 // Confirm stopFinding(false) sets the selection on the found text.
3602 frame->stopFinding(false); 3602 frame->stopFinding(false);
3603 range = frame->selectionRange(); 3603 range = frame->selectionRange();
3604 ASSERT_FALSE(range.isNull()); 3604 ASSERT_FALSE(range.isNull());
3605 EXPECT_EQ(0, range.startOffset()); 3605 EXPECT_EQ(0, range.startOffset());
3606 EXPECT_EQ(4, range.endOffset()); 3606 EXPECT_EQ(4, range.endOffset());
3607 // "bar4" is surrounded by <span>, but the focusable node should be the pare nt <div>. 3607 // "bar4" is surrounded by <span>, but the focusable node should be the pare nt <div>.
3608 EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("div")); 3608 EXPECT_TRUE(frame->document().focusedElement().hasHTMLTagName("div"));
3609 3609
3610 // Find in <select> content. 3610 // Find in <select> content.
3611 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false, 0)); 3611 EXPECT_FALSE(frame->find(findIdentifier, WebString::fromUTF8("bar5"), option s, false, 0, nullptr));
3612 // If there are any matches, stopFinding will set the selection on the found text. 3612 // If there are any matches, stopFinding will set the selection on the found text.
3613 // However, we do not expect any matches, so check that the selection is nul l. 3613 // However, we do not expect any matches, so check that the selection is nul l.
3614 frame->stopFinding(false); 3614 frame->stopFinding(false);
3615 range = frame->selectionRange(); 3615 range = frame->selectionRange();
3616 ASSERT_TRUE(range.isNull()); 3616 ASSERT_TRUE(range.isNull());
3617 } 3617 }
3618 3618
3619 TEST_P(ParameterizedWebFrameTest, GetContentAsPlainText) 3619 TEST_P(ParameterizedWebFrameTest, GetContentAsPlainText)
3620 { 3620 {
3621 FrameTestHelpers::WebViewHelper webViewHelper(this); 3621 FrameTestHelpers::WebViewHelper webViewHelper(this);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
3748 runPendingTasks(); 3748 runPendingTasks();
3749 3749
3750 // Note that the 'result 19' in the <select> element is not expected to prod uce a match. 3750 // Note that the 'result 19' in the <select> element is not expected to prod uce a match.
3751 const char kFindString[] = "result"; 3751 const char kFindString[] = "result";
3752 const int kFindIdentifier = 12345; 3752 const int kFindIdentifier = 12345;
3753 const int kNumResults = 19; 3753 const int kNumResults = 19;
3754 3754
3755 WebFindOptions options; 3755 WebFindOptions options;
3756 WebString searchText = WebString::fromUTF8(kFindString); 3756 WebString searchText = WebString::fromUTF8(kFindString);
3757 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 3757 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
3758 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)) ; 3758 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr));
3759 3759
3760 mainFrame->resetMatchCount(); 3760 mainFrame->resetMatchCount();
3761 3761
3762 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3762 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3763 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true); 3763 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true);
3764 3764
3765 runPendingTasks(); 3765 runPendingTasks();
3766 EXPECT_TRUE(client.findResultsAreReady()); 3766 EXPECT_TRUE(client.findResultsAreReady());
3767 3767
3768 WebVector<WebFloatRect> webMatchRects; 3768 WebVector<WebFloatRect> webMatchRects;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
3864 webViewHelper.resize(WebSize(640, 480)); 3864 webViewHelper.resize(WebSize(640, 480));
3865 runPendingTasks(); 3865 runPendingTasks();
3866 3866
3867 const char kFindString[] = "hello"; 3867 const char kFindString[] = "hello";
3868 const int kFindIdentifier = 12345; 3868 const int kFindIdentifier = 12345;
3869 const int kNumResults = 1; 3869 const int kNumResults = 1;
3870 3870
3871 WebFindOptions options; 3871 WebFindOptions options;
3872 WebString searchText = WebString::fromUTF8(kFindString); 3872 WebString searchText = WebString::fromUTF8(kFindString);
3873 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 3873 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
3874 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)) ; 3874 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr));
3875 3875
3876 mainFrame->resetMatchCount(); 3876 mainFrame->resetMatchCount();
3877 3877
3878 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3878 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3879 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true); 3879 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true);
3880 3880
3881 runPendingTasks(); 3881 runPendingTasks();
3882 EXPECT_TRUE(client.findResultsAreReady()); 3882 EXPECT_TRUE(client.findResultsAreReady());
3883 EXPECT_EQ(kNumResults, client.count()); 3883 EXPECT_EQ(kNumResults, client.count());
3884 } 3884 }
(...skipping 14 matching lines...) Expand all
3899 3899
3900 WebFindOptions options; 3900 WebFindOptions options;
3901 WebString searchText = WebString::fromUTF8(kFindString); 3901 WebString searchText = WebString::fromUTF8(kFindString);
3902 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 3902 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
3903 RefPtrWillBeRawPtr<WebLocalFrameImpl> secondFrame = toWebLocalFrameImpl(main Frame->traverseNext(false)); 3903 RefPtrWillBeRawPtr<WebLocalFrameImpl> secondFrame = toWebLocalFrameImpl(main Frame->traverseNext(false));
3904 RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame()); 3904 RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame());
3905 3905
3906 // Detach the frame before finding. 3906 // Detach the frame before finding.
3907 removeElementById(mainFrame, "frame"); 3907 removeElementById(mainFrame, "frame");
3908 3908
3909 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)) ; 3909 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr));
3910 EXPECT_FALSE(secondFrame->find(kFindIdentifier, searchText, options, false, 0)); 3910 EXPECT_FALSE(secondFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr));
3911 3911
3912 runPendingTasks(); 3912 runPendingTasks();
3913 EXPECT_FALSE(client.findResultsAreReady()); 3913 EXPECT_FALSE(client.findResultsAreReady());
3914 3914
3915 mainFrame->resetMatchCount(); 3915 mainFrame->resetMatchCount();
3916 3916
3917 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3917 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3918 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true); 3918 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true);
3919 3919
3920 runPendingTasks(); 3920 runPendingTasks();
(...skipping 14 matching lines...) Expand all
3935 const char kFindString[] = "result"; 3935 const char kFindString[] = "result";
3936 const int kFindIdentifier = 12345; 3936 const int kFindIdentifier = 12345;
3937 3937
3938 WebFindOptions options; 3938 WebFindOptions options;
3939 WebString searchText = WebString::fromUTF8(kFindString); 3939 WebString searchText = WebString::fromUTF8(kFindString);
3940 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 3940 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
3941 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext (false)); 3941 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext (false));
3942 RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame()); 3942 RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame());
3943 3943
3944 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3944 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3945 EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0)); 3945 EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0, nullptr));
3946 3946
3947 runPendingTasks(); 3947 runPendingTasks();
3948 EXPECT_FALSE(client.findResultsAreReady()); 3948 EXPECT_FALSE(client.findResultsAreReady());
3949 3949
3950 // Detach the frame between finding and scoping. 3950 // Detach the frame between finding and scoping.
3951 removeElementById(mainFrame, "frame"); 3951 removeElementById(mainFrame, "frame");
3952 3952
3953 mainFrame->resetMatchCount(); 3953 mainFrame->resetMatchCount();
3954 3954
3955 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3955 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
(...skipping 17 matching lines...) Expand all
3973 const char kFindString[] = "result"; 3973 const char kFindString[] = "result";
3974 const int kFindIdentifier = 12345; 3974 const int kFindIdentifier = 12345;
3975 3975
3976 WebFindOptions options; 3976 WebFindOptions options;
3977 WebString searchText = WebString::fromUTF8(kFindString); 3977 WebString searchText = WebString::fromUTF8(kFindString);
3978 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 3978 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
3979 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext (false)); 3979 WebLocalFrameImpl* secondFrame = toWebLocalFrameImpl(mainFrame->traverseNext (false));
3980 RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame()); 3980 RefPtrWillBeRawPtr<LocalFrame> holdSecondFrame(secondFrame->frame());
3981 3981
3982 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3982 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3983 EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0)); 3983 EXPECT_TRUE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0, nullptr));
3984 3984
3985 runPendingTasks(); 3985 runPendingTasks();
3986 EXPECT_FALSE(client.findResultsAreReady()); 3986 EXPECT_FALSE(client.findResultsAreReady());
3987 3987
3988 mainFrame->resetMatchCount(); 3988 mainFrame->resetMatchCount();
3989 3989
3990 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 3990 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
3991 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true); 3991 frame->toWebLocalFrame()->scopeStringMatches(kFindIdentifier, searchText , options, true);
3992 3992
3993 // The first scopeStringMatches will have reset the state. Detach before it actually scopes. 3993 // The first scopeStringMatches will have reset the state. Detach before it actually scopes.
(...skipping 17 matching lines...) Expand all
4011 const int kFindIdentifier = 12345; 4011 const int kFindIdentifier = 12345;
4012 4012
4013 WebFindOptions options; 4013 WebFindOptions options;
4014 WebString searchText = WebString::fromUTF8(kFindString); 4014 WebString searchText = WebString::fromUTF8(kFindString);
4015 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 4015 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
4016 4016
4017 // Check that child frame exists. 4017 // Check that child frame exists.
4018 EXPECT_TRUE(!!mainFrame->traverseNext(false)); 4018 EXPECT_TRUE(!!mainFrame->traverseNext(false));
4019 4019
4020 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false)) 4020 for (WebFrame* frame = mainFrame; frame; frame = frame->traverseNext(false))
4021 EXPECT_FALSE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0)); 4021 EXPECT_FALSE(frame->toWebLocalFrame()->find(kFindIdentifier, searchText, options, false, 0, nullptr));
4022 4022
4023 runPendingTasks(); 4023 runPendingTasks();
4024 EXPECT_FALSE(client.findResultsAreReady()); 4024 EXPECT_FALSE(client.findResultsAreReady());
4025 4025
4026 mainFrame->resetMatchCount(); 4026 mainFrame->resetMatchCount();
4027 } 4027 }
4028 4028
4029 TEST_P(ParameterizedWebFrameTest, SetTickmarks) 4029 TEST_P(ParameterizedWebFrameTest, SetTickmarks)
4030 { 4030 {
4031 registerMockedHttpURLLoad("find.html"); 4031 registerMockedHttpURLLoad("find.html");
4032 4032
4033 FindUpdateWebFrameClient client; 4033 FindUpdateWebFrameClient client;
4034 FrameTestHelpers::WebViewHelper webViewHelper(this); 4034 FrameTestHelpers::WebViewHelper webViewHelper(this);
4035 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client); 4035 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client);
4036 webViewHelper.resize(WebSize(640, 480)); 4036 webViewHelper.resize(WebSize(640, 480));
4037 runPendingTasks(); 4037 runPendingTasks();
4038 4038
4039 const char kFindString[] = "foo"; 4039 const char kFindString[] = "foo";
4040 const int kFindIdentifier = 12345; 4040 const int kFindIdentifier = 12345;
4041 4041
4042 WebFindOptions options; 4042 WebFindOptions options;
4043 WebString searchText = WebString::fromUTF8(kFindString); 4043 WebString searchText = WebString::fromUTF8(kFindString);
4044 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame()); 4044 WebLocalFrameImpl* mainFrame = toWebLocalFrameImpl(webViewHelper.webView()-> mainFrame());
4045 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0)) ; 4045 EXPECT_TRUE(mainFrame->find(kFindIdentifier, searchText, options, false, 0, nullptr));
4046 4046
4047 mainFrame->resetMatchCount(); 4047 mainFrame->resetMatchCount();
4048 mainFrame->scopeStringMatches(kFindIdentifier, searchText, options, true); 4048 mainFrame->scopeStringMatches(kFindIdentifier, searchText, options, true);
4049 4049
4050 runPendingTasks(); 4050 runPendingTasks();
4051 EXPECT_TRUE(client.findResultsAreReady()); 4051 EXPECT_TRUE(client.findResultsAreReady());
4052 4052
4053 // Get the tickmarks for the original find request. 4053 // Get the tickmarks for the original find request.
4054 FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl()->frameVi ew(); 4054 FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl()->frameVi ew();
4055 RefPtrWillBeRawPtr<Scrollbar> scrollbar = frameView->createScrollbar(Horizon talScrollbar); 4055 RefPtrWillBeRawPtr<Scrollbar> scrollbar = frameView->createScrollbar(Horizon talScrollbar);
(...skipping 16 matching lines...) Expand all
4072 // Reset the tickmark behavior. 4072 // Reset the tickmark behavior.
4073 Vector<IntRect> resetTickmarks; 4073 Vector<IntRect> resetTickmarks;
4074 mainFrame->setTickmarks(resetTickmarks); 4074 mainFrame->setTickmarks(resetTickmarks);
4075 4075
4076 // Check that the original tickmarks are returned 4076 // Check that the original tickmarks are returned
4077 Vector<IntRect> originalTickmarksAfterReset; 4077 Vector<IntRect> originalTickmarksAfterReset;
4078 scrollbar->getTickmarks(originalTickmarksAfterReset); 4078 scrollbar->getTickmarks(originalTickmarksAfterReset);
4079 EXPECT_EQ(originalTickmarks, originalTickmarksAfterReset); 4079 EXPECT_EQ(originalTickmarks, originalTickmarksAfterReset);
4080 } 4080 }
4081 4081
4082 TEST_P(ParameterizedWebFrameTest, FindInPageJavaScriptUpdatesDOM)
4083 {
4084 registerMockedHttpURLLoad("find.html");
4085
4086 FindUpdateWebFrameClient client;
4087 FrameTestHelpers::WebViewHelper webViewHelper(this);
4088 webViewHelper.initializeAndLoad(m_baseURL + "find.html", true, &client);
4089 webViewHelper.resize(WebSize(640, 480));
4090 runPendingTasks();
4091
4092 WebLocalFrame* frame = webViewHelper.webView()->mainFrame()->toWebLocalFrame ();
4093 const int findIdentifier = 12345;
4094 static const char* kFindString = "foo";
4095 WebString searchText = WebString::fromUTF8(kFindString);
4096 WebFindOptions options;
4097 bool activeNow;
4098
4099 frame->resetMatchCount();
4100 frame->scopeStringMatches(findIdentifier, searchText, options, true);
4101 runPendingTasks();
4102 EXPECT_TRUE(client.findResultsAreReady());
4103
4104 // Find in a <div> element.
4105 options.findNext = true;
4106 EXPECT_TRUE(frame->find(findIdentifier, searchText, options, false, 0, &acti veNow));
4107 EXPECT_TRUE(activeNow);
4108
4109 // Insert new text, which contains occurence of |searchText|.
4110 frame->executeScript(WebScriptSource(
4111 "var newTextNode = document.createTextNode('bar5 foo5');"
4112 "var textArea = document.getElementsByTagName('textarea')[0];"
4113 "document.body.insertBefore(newTextNode, textArea);"));
4114
4115 // Find in a <input> element.
4116 EXPECT_TRUE(frame->find(findIdentifier, searchText, options, false, 0, &acti veNow));
4117 EXPECT_TRUE(activeNow);
4118
4119 // Find in the inserted text node.
4120 EXPECT_TRUE(frame->find(findIdentifier, searchText, options, false, 0, &acti veNow));
4121 frame->stopFinding(false);
4122 WebRange range = frame->selectionRange();
4123 EXPECT_EQ(5, range.startOffset());
4124 EXPECT_EQ(8, range.endOffset());
4125 EXPECT_TRUE(frame->document().focusedElement().isNull());
4126 EXPECT_FALSE(activeNow);
4127 }
4128
4082 static WebPoint topLeft(const WebRect& rect) 4129 static WebPoint topLeft(const WebRect& rect)
4083 { 4130 {
4084 return WebPoint(rect.x, rect.y); 4131 return WebPoint(rect.x, rect.y);
4085 } 4132 }
4086 4133
4087 static WebPoint bottomRightMinusOne(const WebRect& rect) 4134 static WebPoint bottomRightMinusOne(const WebRect& rect)
4088 { 4135 {
4089 // FIXME: If we don't subtract 1 from the x- and y-coordinates of the 4136 // FIXME: If we don't subtract 1 from the x- and y-coordinates of the
4090 // selection bounds, selectRange() will select the *next* element. That's 4137 // selection bounds, selectRange() will select the *next* element. That's
4091 // strictly correct, as hit-testing checks the pixel to the lower-right of 4138 // strictly correct, as hit-testing checks the pixel to the lower-right of
(...skipping 4315 matching lines...) Expand 10 before | Expand all | Expand 10 after
8407 } 8454 }
8408 8455
8409 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameParentVisibilityChange) 8456 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameParentVisibilityChange)
8410 { 8457 {
8411 swapLocalFrameToRemoteFrame(); 8458 swapLocalFrameToRemoteFrame();
8412 executeScriptOnMainFrame(WebScriptSource("document.querySelector('iframe').p arentElement.style.display = 'none';")); 8459 executeScriptOnMainFrame(WebScriptSource("document.querySelector('iframe').p arentElement.style.display = 'none';"));
8413 EXPECT_FALSE(remoteFrameClient()->isVisible()); 8460 EXPECT_FALSE(remoteFrameClient()->isVisible());
8414 } 8461 }
8415 8462
8416 } // namespace blink 8463 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698