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

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

Issue 545123002: Cleanup namespace usage in Source/web/. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « Source/web/tests/WebUnitTests.cpp ('k') | 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) 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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 }; 220 };
221 221
222 TEST_F(WebViewTest, CopyImageAt) 222 TEST_F(WebViewTest, CopyImageAt)
223 { 223 {
224 std::string url = m_baseURL + "canvas-copy-image.html"; 224 std::string url = m_baseURL + "canvas-copy-image.html";
225 URLTestHelpers::registerMockedURLLoad(toKURL(url), "canvas-copy-image.html") ; 225 URLTestHelpers::registerMockedURLLoad(toKURL(url), "canvas-copy-image.html") ;
226 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0); 226 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0);
227 webView->resize(WebSize(400, 400)); 227 webView->resize(WebSize(400, 400));
228 webView->copyImageAt(WebPoint(50, 50)); 228 webView->copyImageAt(WebPoint(50, 50));
229 229
230 blink::WebData data = blink::Platform::current()->clipboard()->readImage(bli nk::WebClipboard::Buffer()); 230 WebData data = Platform::current()->clipboard()->readImage(WebClipboard::Buf fer());
231 blink::WebImage image = blink::WebImage::fromData(data, WebSize()); 231 WebImage image = WebImage::fromData(data, WebSize());
232 232
233 SkAutoLockPixels autoLock(image.getSkBitmap()); 233 SkAutoLockPixels autoLock(image.getSkBitmap());
234 EXPECT_EQ(SkColorSetARGB(255, 255, 0, 0), image.getSkBitmap().getColor(0, 0) ); 234 EXPECT_EQ(SkColorSetARGB(255, 255, 0, 0), image.getSkBitmap().getColor(0, 0) );
235 }; 235 };
236 236
237 TEST_F(WebViewTest, SetBaseBackgroundColor) 237 TEST_F(WebViewTest, SetBaseBackgroundColor)
238 { 238 {
239 const WebColor kWhite = 0xFFFFFFFF; 239 const WebColor kWhite = 0xFFFFFFFF;
240 const WebColor kBlue = 0xFF0000FF; 240 const WebColor kBlue = 0xFF0000FF;
241 const WebColor kDarkCyan = 0xFF227788; 241 const WebColor kDarkCyan = 0xFF227788;
(...skipping 16 matching lines...) Expand all
258 258
259 webView->setBaseBackgroundColor(kTranslucentPutty); 259 webView->setBaseBackgroundColor(kTranslucentPutty);
260 // Expected: red (50% alpha) blended atop kTranslucentPutty. Note the alpha. 260 // Expected: red (50% alpha) blended atop kTranslucentPutty. Note the alpha.
261 EXPECT_EQ(0xBFE93B32, webView->backgroundColor()); 261 EXPECT_EQ(0xBFE93B32, webView->backgroundColor());
262 262
263 webView->setBaseBackgroundColor(kTransparent); 263 webView->setBaseBackgroundColor(kTransparent);
264 FrameTestHelpers::loadHTMLString(webView->mainFrame(), "<html><head><style>b ody {background-color:transparent}</style></head></html>", baseURL); 264 FrameTestHelpers::loadHTMLString(webView->mainFrame(), "<html><head><style>b ody {background-color:transparent}</style></head></html>", baseURL);
265 // Expected: transparent on top of kTransparent will still be transparent. 265 // Expected: transparent on top of kTransparent will still be transparent.
266 EXPECT_EQ(kTransparent, webView->backgroundColor()); 266 EXPECT_EQ(kTransparent, webView->backgroundColor());
267 267
268 blink::LocalFrame* frame = webView->mainFrameImpl()->frame(); 268 LocalFrame* frame = webView->mainFrameImpl()->frame();
269 269
270 // Creating a new frame view with the background color having 0 alpha. 270 // Creating a new frame view with the background color having 0 alpha.
271 frame->createView(blink::IntSize(1024, 768), blink::Color::transparent, true ); 271 frame->createView(IntSize(1024, 768), Color::transparent, true);
272 EXPECT_EQ(kTransparent, frame->view()->baseBackgroundColor()); 272 EXPECT_EQ(kTransparent, frame->view()->baseBackgroundColor());
273 273
274 blink::Color kTransparentRed(100, 0, 0, 0); 274 Color kTransparentRed(100, 0, 0, 0);
275 frame->createView(blink::IntSize(1024, 768), kTransparentRed, true); 275 frame->createView(IntSize(1024, 768), kTransparentRed, true);
276 EXPECT_EQ(kTransparentRed, frame->view()->baseBackgroundColor()); 276 EXPECT_EQ(kTransparentRed, frame->view()->baseBackgroundColor());
277 } 277 }
278 278
279 TEST_F(WebViewTest, SetBaseBackgroundColorBeforeMainFrame) 279 TEST_F(WebViewTest, SetBaseBackgroundColorBeforeMainFrame)
280 { 280 {
281 const WebColor kBlue = 0xFF0000FF; 281 const WebColor kBlue = 0xFF0000FF;
282 FrameTestHelpers::TestWebViewClient webViewClient; 282 FrameTestHelpers::TestWebViewClient webViewClient;
283 WebView* webView = WebViewImpl::create(&webViewClient); 283 WebView* webView = WebViewImpl::create(&webViewClient);
284 EXPECT_NE(kBlue, webView->backgroundColor()); 284 EXPECT_NE(kBlue, webView->backgroundColor());
285 // webView does not have a frame yet, but we should still be able to set the background color. 285 // webView does not have a frame yet, but we should still be able to set the background color.
(...skipping 17 matching lines...) Expand all
303 webView->settings()->setShouldClearDocumentBackground(false); 303 webView->settings()->setShouldClearDocumentBackground(false);
304 webView->resize(WebSize(kWidth, kHeight)); 304 webView->resize(WebSize(kWidth, kHeight));
305 webView->layout(); 305 webView->layout();
306 306
307 // Set canvas background to red with alpha. 307 // Set canvas background to red with alpha.
308 SkBitmap bitmap; 308 SkBitmap bitmap;
309 ASSERT_TRUE(bitmap.allocN32Pixels(kWidth, kHeight)); 309 ASSERT_TRUE(bitmap.allocN32Pixels(kWidth, kHeight));
310 SkCanvas canvas(bitmap); 310 SkCanvas canvas(bitmap);
311 canvas.clear(kAlphaRed); 311 canvas.clear(kAlphaRed);
312 312
313 blink::GraphicsContext context(&canvas); 313 GraphicsContext context(&canvas);
314 314
315 // Paint the root of the main frame in the way that CompositedLayerMapping w ould. 315 // Paint the root of the main frame in the way that CompositedLayerMapping w ould.
316 blink::FrameView* view = m_webViewHelper.webViewImpl()->mainFrameImpl()->fra meView(); 316 FrameView* view = m_webViewHelper.webViewImpl()->mainFrameImpl()->frameView( );
317 blink::RenderLayer* rootLayer = view->renderView()->layer(); 317 RenderLayer* rootLayer = view->renderView()->layer();
318 blink::IntRect paintRect(0, 0, kWidth, kHeight); 318 IntRect paintRect(0, 0, kWidth, kHeight);
319 blink::LayerPaintingInfo paintingInfo(rootLayer, paintRect, blink::PaintBeha viorNormal, blink::LayoutSize()); 319 LayerPaintingInfo paintingInfo(rootLayer, paintRect, PaintBehaviorNormal, La youtSize());
320 rootLayer->paintLayerContents(&context, paintingInfo, blink::PaintLayerPaint ingCompositingAllPhases); 320 rootLayer->paintLayerContents(&context, paintingInfo, PaintLayerPaintingComp ositingAllPhases);
321 321
322 // The result should be a blend of red and green. 322 // The result should be a blend of red and green.
323 SkColor color = bitmap.getColor(kWidth / 2, kHeight / 2); 323 SkColor color = bitmap.getColor(kWidth / 2, kHeight / 2);
324 EXPECT_TRUE(blink::redChannel(color)); 324 EXPECT_TRUE(redChannel(color));
325 EXPECT_TRUE(blink::greenChannel(color)); 325 EXPECT_TRUE(greenChannel(color));
326 } 326 }
327 327
328 TEST_F(WebViewTest, FocusIsInactive) 328 TEST_F(WebViewTest, FocusIsInactive)
329 { 329 {
330 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "visible_iframe.html"); 330 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "visible_iframe.html");
331 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "visible_if rame.html"); 331 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "visible_if rame.html");
332 332
333 webView->setFocus(true); 333 webView->setFocus(true);
334 webView->setIsActive(true); 334 webView->setIsActive(true);
335 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); 335 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
336 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument()); 336 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument());
337 337
338 blink::HTMLDocument* document = blink::toHTMLDocument(frame->frame()->docume nt()); 338 HTMLDocument* document = toHTMLDocument(frame->frame()->document());
339 EXPECT_TRUE(document->hasFocus()); 339 EXPECT_TRUE(document->hasFocus());
340 webView->setFocus(false); 340 webView->setFocus(false);
341 webView->setIsActive(false); 341 webView->setIsActive(false);
342 EXPECT_FALSE(document->hasFocus()); 342 EXPECT_FALSE(document->hasFocus());
343 webView->setFocus(true); 343 webView->setFocus(true);
344 webView->setIsActive(true); 344 webView->setIsActive(true);
345 EXPECT_TRUE(document->hasFocus()); 345 EXPECT_TRUE(document->hasFocus());
346 webView->setFocus(true); 346 webView->setFocus(true);
347 webView->setIsActive(false); 347 webView->setIsActive(false);
348 EXPECT_FALSE(document->hasFocus()); 348 EXPECT_FALSE(document->hasFocus());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 int expectedWidth, int expectedHeight, 395 int expectedWidth, int expectedHeight,
396 HorizontalScrollbarState expectedHorizontalStat e, VerticalScrollbarState expectedVerticalState) 396 HorizontalScrollbarState expectedHorizontalStat e, VerticalScrollbarState expectedVerticalState)
397 { 397 {
398 AutoResizeWebViewClient client; 398 AutoResizeWebViewClient client;
399 std::string url = m_baseURL + "specify_size.html?" + pageWidth + ":" + pageH eight; 399 std::string url = m_baseURL + "specify_size.html?" + pageWidth + ":" + pageH eight;
400 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html"); 400 URLTestHelpers::registerMockedURLLoad(toKURL(url), "specify_size.html");
401 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0, &client); 401 WebView* webView = m_webViewHelper.initializeAndLoad(url, true, 0, &client);
402 client.testData().setWebView(webView); 402 client.testData().setWebView(webView);
403 403
404 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); 404 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
405 blink::FrameView* frameView = frame->frame()->view(); 405 FrameView* frameView = frame->frame()->view();
406 frameView->layout(); 406 frameView->layout();
407 EXPECT_FALSE(frameView->layoutPending()); 407 EXPECT_FALSE(frameView->layoutPending());
408 EXPECT_FALSE(frameView->needsLayout()); 408 EXPECT_FALSE(frameView->needsLayout());
409 409
410 webView->enableAutoResizeMode(minAutoResize, maxAutoResize); 410 webView->enableAutoResizeMode(minAutoResize, maxAutoResize);
411 EXPECT_TRUE(frameView->layoutPending()); 411 EXPECT_TRUE(frameView->layoutPending());
412 EXPECT_TRUE(frameView->needsLayout()); 412 EXPECT_TRUE(frameView->needsLayout());
413 frameView->layout(); 413 frameView->layout();
414 414
415 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument()); 415 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument());
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 info = webView->textInputInfo(); 668 info = webView->textInputInfo();
669 EXPECT_EQ("ijklmnopqrstuvwxyz", std::string(info.value.utf8().data())); 669 EXPECT_EQ("ijklmnopqrstuvwxyz", std::string(info.value.utf8().data()));
670 } 670 }
671 671
672 TEST_F(WebViewTest, SetCompositionFromExistingText) 672 TEST_F(WebViewTest, SetCompositionFromExistingText)
673 { 673 {
674 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html")); 674 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("input_field_populated.html"));
675 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html"); 675 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "input_fiel d_populated.html");
676 webView->setInitialFocus(false); 676 webView->setInitialFocus(false);
677 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); 677 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1));
678 underlines[0] = blink::WebCompositionUnderline(0, 4, 0, false, 0); 678 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0);
679 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); 679 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
680 frame->setEditableSelectionOffsets(4, 10); 680 frame->setEditableSelectionOffsets(4, 10);
681 frame->setCompositionFromExistingText(8, 12, underlines); 681 frame->setCompositionFromExistingText(8, 12, underlines);
682 WebVector<WebCompositionUnderline> underlineResults = toWebViewImpl(webView) ->compositionUnderlines(); 682 WebVector<WebCompositionUnderline> underlineResults = toWebViewImpl(webView) ->compositionUnderlines();
683 EXPECT_EQ(8u, underlineResults[0].startOffset); 683 EXPECT_EQ(8u, underlineResults[0].startOffset);
684 EXPECT_EQ(12u, underlineResults[0].endOffset); 684 EXPECT_EQ(12u, underlineResults[0].endOffset);
685 WebTextInputInfo info = webView->textInputInfo(); 685 WebTextInputInfo info = webView->textInputInfo();
686 EXPECT_EQ(4, info.selectionStart); 686 EXPECT_EQ(4, info.selectionStart);
687 EXPECT_EQ(10, info.selectionEnd); 687 EXPECT_EQ(10, info.selectionEnd);
688 EXPECT_EQ(8, info.compositionStart); 688 EXPECT_EQ(8, info.compositionStart);
689 EXPECT_EQ(12, info.compositionEnd); 689 EXPECT_EQ(12, info.compositionEnd);
690 WebVector<WebCompositionUnderline> emptyUnderlines; 690 WebVector<WebCompositionUnderline> emptyUnderlines;
691 frame->setCompositionFromExistingText(0, 0, emptyUnderlines); 691 frame->setCompositionFromExistingText(0, 0, emptyUnderlines);
692 info = webView->textInputInfo(); 692 info = webView->textInputInfo();
693 EXPECT_EQ(4, info.selectionStart); 693 EXPECT_EQ(4, info.selectionStart);
694 EXPECT_EQ(10, info.selectionEnd); 694 EXPECT_EQ(10, info.selectionEnd);
695 EXPECT_EQ(-1, info.compositionStart); 695 EXPECT_EQ(-1, info.compositionStart);
696 EXPECT_EQ(-1, info.compositionEnd); 696 EXPECT_EQ(-1, info.compositionEnd);
697 } 697 }
698 698
699 TEST_F(WebViewTest, SetCompositionFromExistingTextInTextArea) 699 TEST_F(WebViewTest, SetCompositionFromExistingTextInTextArea)
700 { 700 {
701 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("text_area_populated.html")); 701 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("text_area_populated.html"));
702 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_ populated.html"); 702 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "text_area_ populated.html");
703 webView->setInitialFocus(false); 703 webView->setInitialFocus(false);
704 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); 704 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1));
705 underlines[0] = blink::WebCompositionUnderline(0, 4, 0, false, 0); 705 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0);
706 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); 706 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
707 frame->setEditableSelectionOffsets(27, 27); 707 frame->setEditableSelectionOffsets(27, 27);
708 std::string newLineText("\n"); 708 std::string newLineText("\n");
709 webView->confirmComposition(WebString::fromUTF8(newLineText.c_str())); 709 webView->confirmComposition(WebString::fromUTF8(newLineText.c_str()));
710 WebTextInputInfo info = webView->textInputInfo(); 710 WebTextInputInfo info = webView->textInputInfo();
711 EXPECT_EQ("0123456789abcdefghijklmnopq\nrstuvwxyz", std::string(info.value.u tf8().data())); 711 EXPECT_EQ("0123456789abcdefghijklmnopq\nrstuvwxyz", std::string(info.value.u tf8().data()));
712 712
713 frame->setEditableSelectionOffsets(31, 31); 713 frame->setEditableSelectionOffsets(31, 31);
714 frame->setCompositionFromExistingText(30, 34, underlines); 714 frame->setCompositionFromExistingText(30, 34, underlines);
715 WebVector<WebCompositionUnderline> underlineResults = toWebViewImpl(webView) ->compositionUnderlines(); 715 WebVector<WebCompositionUnderline> underlineResults = toWebViewImpl(webView) ->compositionUnderlines();
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 webViewImpl->layout(); 819 webViewImpl->layout();
820 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width); 820 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width);
821 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); 821 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height);
822 822
823 // Make the page scale and scroll with the given paremeters. 823 // Make the page scale and scroll with the given paremeters.
824 webViewImpl->setPageScaleFactor(2.0f); 824 webViewImpl->setPageScaleFactor(2.0f);
825 webViewImpl->setMainFrameScrollOffset(WebPoint(116, 84)); 825 webViewImpl->setMainFrameScrollOffset(WebPoint(116, 84));
826 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); 826 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor());
827 EXPECT_EQ(116, webViewImpl->mainFrame()->scrollOffset().width); 827 EXPECT_EQ(116, webViewImpl->mainFrame()->scrollOffset().width);
828 EXPECT_EQ(84, webViewImpl->mainFrame()->scrollOffset().height); 828 EXPECT_EQ(84, webViewImpl->mainFrame()->scrollOffset().height);
829 blink::LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFr ame()); 829 LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame());
830 mainFrameLocal->loader().saveScrollState(); 830 mainFrameLocal->loader().saveScrollState();
831 EXPECT_EQ(2.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); 831 EXPECT_EQ(2.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor());
832 EXPECT_EQ(116, mainFrameLocal->loader().currentItem()->scrollPoint().x()); 832 EXPECT_EQ(116, mainFrameLocal->loader().currentItem()->scrollPoint().x());
833 EXPECT_EQ(84, mainFrameLocal->loader().currentItem()->scrollPoint().y()); 833 EXPECT_EQ(84, mainFrameLocal->loader().currentItem()->scrollPoint().y());
834 834
835 // Confirm that resetting the page state resets the saved scroll position. 835 // Confirm that resetting the page state resets the saved scroll position.
836 // The HistoryController treats a page scale factor of 0.0f as special and a voids 836 // The HistoryController treats a page scale factor of 0.0f as special and a voids
837 // restoring it to the WebView. 837 // restoring it to the WebView.
838 webViewImpl->resetScrollAndScaleState(); 838 webViewImpl->resetScrollAndScaleState();
839 EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor()); 839 EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor());
840 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width); 840 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width);
841 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); 841 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height);
842 EXPECT_EQ(0.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor()); 842 EXPECT_EQ(0.0f, mainFrameLocal->loader().currentItem()->pageScaleFactor());
843 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollPoint().x()); 843 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollPoint().x());
844 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollPoint().y()); 844 EXPECT_EQ(0, mainFrameLocal->loader().currentItem()->scrollPoint().y());
845 } 845 }
846 846
847 TEST_F(WebViewTest, BackForwardRestoreScroll) 847 TEST_F(WebViewTest, BackForwardRestoreScroll)
848 { 848 {
849 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("back_forward_restore_scroll.html")); 849 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("back_forward_restore_scroll.html"));
850 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "ba ck_forward_restore_scroll.html"); 850 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "ba ck_forward_restore_scroll.html");
851 webViewImpl->resize(WebSize(640, 480)); 851 webViewImpl->resize(WebSize(640, 480));
852 webViewImpl->layout(); 852 webViewImpl->layout();
853 853
854 // Emulate a user scroll 854 // Emulate a user scroll
855 webViewImpl->setMainFrameScrollOffset(WebPoint(0, 900)); 855 webViewImpl->setMainFrameScrollOffset(WebPoint(0, 900));
856 blink::LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFr ame()); 856 LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame());
857 RefPtr<blink::HistoryItem> item1 = mainFrameLocal->loader().currentItem(); 857 RefPtr<HistoryItem> item1 = mainFrameLocal->loader().currentItem();
858 858
859 // Click an anchor 859 // Click an anchor
860 mainFrameLocal->loader().load(blink::FrameLoadRequest(mainFrameLocal->docume nt(), blink::ResourceRequest(mainFrameLocal->document()->completeURL("#a")))); 860 mainFrameLocal->loader().load(FrameLoadRequest(mainFrameLocal->document(), R esourceRequest(mainFrameLocal->document()->completeURL("#a"))));
861 RefPtr<blink::HistoryItem> item2 = mainFrameLocal->loader().currentItem(); 861 RefPtr<HistoryItem> item2 = mainFrameLocal->loader().currentItem();
862 862
863 // Go back, then forward, then back again. 863 // Go back, then forward, then back again.
864 mainFrameLocal->loader().loadHistoryItem(item1.get(), blink::HistorySameDocu mentLoad); 864 mainFrameLocal->loader().loadHistoryItem(item1.get(), HistorySameDocumentLoa d);
865 mainFrameLocal->loader().loadHistoryItem(item2.get(), blink::HistorySameDocu mentLoad); 865 mainFrameLocal->loader().loadHistoryItem(item2.get(), HistorySameDocumentLoa d);
866 mainFrameLocal->loader().loadHistoryItem(item1.get(), blink::HistorySameDocu mentLoad); 866 mainFrameLocal->loader().loadHistoryItem(item1.get(), HistorySameDocumentLoa d);
867 867
868 // Click a different anchor 868 // Click a different anchor
869 mainFrameLocal->loader().load(blink::FrameLoadRequest(mainFrameLocal->docume nt(), blink::ResourceRequest(mainFrameLocal->document()->completeURL("#b")))); 869 mainFrameLocal->loader().load(FrameLoadRequest(mainFrameLocal->document(), R esourceRequest(mainFrameLocal->document()->completeURL("#b"))));
870 RefPtr<blink::HistoryItem> item3 = mainFrameLocal->loader().currentItem(); 870 RefPtr<HistoryItem> item3 = mainFrameLocal->loader().currentItem();
871 871
872 // Go back, then forward. The scroll position should be properly set on the forward navigation. 872 // Go back, then forward. The scroll position should be properly set on the forward navigation.
873 mainFrameLocal->loader().loadHistoryItem(item1.get(), blink::HistorySameDocu mentLoad); 873 mainFrameLocal->loader().loadHistoryItem(item1.get(), HistorySameDocumentLoa d);
874 mainFrameLocal->loader().loadHistoryItem(item3.get(), blink::HistorySameDocu mentLoad); 874 mainFrameLocal->loader().loadHistoryItem(item3.get(), HistorySameDocumentLoa d);
875 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width); 875 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width);
876 EXPECT_GT(webViewImpl->mainFrame()->scrollOffset().height, 2000); 876 EXPECT_GT(webViewImpl->mainFrame()->scrollOffset().height, 2000);
877 } 877 }
878 878
879 class EnterFullscreenWebViewClient : public FrameTestHelpers::TestWebViewClient { 879 class EnterFullscreenWebViewClient : public FrameTestHelpers::TestWebViewClient {
880 public: 880 public:
881 // WebViewClient methods 881 // WebViewClient methods
882 virtual bool enterFullScreen() { return true; } 882 virtual bool enterFullScreen() { return true; }
883 virtual void exitFullScreen() { } 883 virtual void exitFullScreen() { }
884 }; 884 };
885 885
886 886
887 TEST_F(WebViewTest, EnterFullscreenResetScrollAndScaleState) 887 TEST_F(WebViewTest, EnterFullscreenResetScrollAndScaleState)
888 { 888 {
889 EnterFullscreenWebViewClient client; 889 EnterFullscreenWebViewClient client;
890 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("hello_world.html")); 890 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("hello_world.html"));
891 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "he llo_world.html", true, 0, &client); 891 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "he llo_world.html", true, 0, &client);
892 webViewImpl->resize(WebSize(640, 480)); 892 webViewImpl->resize(WebSize(640, 480));
893 webViewImpl->layout(); 893 webViewImpl->layout();
894 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width); 894 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().width);
895 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height); 895 EXPECT_EQ(0, webViewImpl->mainFrame()->scrollOffset().height);
896 896
897 // Make the page scale and scroll with the given paremeters. 897 // Make the page scale and scroll with the given paremeters.
898 webViewImpl->setPageScaleFactor(2.0f); 898 webViewImpl->setPageScaleFactor(2.0f);
899 webViewImpl->setMainFrameScrollOffset(WebPoint(116, 84)); 899 webViewImpl->setMainFrameScrollOffset(WebPoint(116, 84));
900 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); 900 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor());
901 EXPECT_EQ(116, webViewImpl->mainFrame()->scrollOffset().width); 901 EXPECT_EQ(116, webViewImpl->mainFrame()->scrollOffset().width);
902 EXPECT_EQ(84, webViewImpl->mainFrame()->scrollOffset().height); 902 EXPECT_EQ(84, webViewImpl->mainFrame()->scrollOffset().height);
903 903
904 RefPtrWillBeRawPtr<blink::Element> element = static_cast<PassRefPtrWillBeRaw Ptr<blink::Element> >(webViewImpl->mainFrame()->document().body()); 904 RefPtrWillBeRawPtr<Element> element = static_cast<PassRefPtrWillBeRawPtr<Ele ment> >(webViewImpl->mainFrame()->document().body());
905 webViewImpl->enterFullScreenForElement(element.get()); 905 webViewImpl->enterFullScreenForElement(element.get());
906 webViewImpl->didEnterFullScreen(); 906 webViewImpl->didEnterFullScreen();
907 907
908 // Page scale factor must be 1.0 during fullscreen for elements to be sized 908 // Page scale factor must be 1.0 during fullscreen for elements to be sized
909 // properly. 909 // properly.
910 EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor()); 910 EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor());
911 911
912 // Make sure fullscreen nesting doesn't disrupt scroll/scale saving. 912 // Make sure fullscreen nesting doesn't disrupt scroll/scale saving.
913 RefPtrWillBeRawPtr<blink::Element> otherElement = static_cast<PassRefPtrWill BeRawPtr<blink::Element> >(webViewImpl->mainFrame()->document().head()); 913 RefPtrWillBeRawPtr<Element> otherElement = static_cast<PassRefPtrWillBeRawPt r<Element> >(webViewImpl->mainFrame()->document().head());
914 webViewImpl->enterFullScreenForElement(otherElement.get()); 914 webViewImpl->enterFullScreenForElement(otherElement.get());
915 915
916 // Confirm that exiting fullscreen restores the parameters. 916 // Confirm that exiting fullscreen restores the parameters.
917 webViewImpl->didExitFullScreen(); 917 webViewImpl->didExitFullScreen();
918 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); 918 EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor());
919 EXPECT_EQ(116, webViewImpl->mainFrame()->scrollOffset().width); 919 EXPECT_EQ(116, webViewImpl->mainFrame()->scrollOffset().width);
920 EXPECT_EQ(84, webViewImpl->mainFrame()->scrollOffset().height); 920 EXPECT_EQ(84, webViewImpl->mainFrame()->scrollOffset().height);
921 921
922 m_webViewHelper.reset(); // Explicitly reset to break dependency on locally scoped client. 922 m_webViewHelper.reset(); // Explicitly reset to break dependency on locally scoped client.
923 } 923 }
(...skipping 17 matching lines...) Expand all
941 bool m_printCalled; 941 bool m_printCalled;
942 }; 942 };
943 943
944 944
945 TEST_F(WebViewTest, PrintWithXHRInFlight) 945 TEST_F(WebViewTest, PrintWithXHRInFlight)
946 { 946 {
947 PrintWebViewClient client; 947 PrintWebViewClient client;
948 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("print_with_xhr_inflight.html")); 948 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("print_with_xhr_inflight.html"));
949 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "pr int_with_xhr_inflight.html", true, 0, &client); 949 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "pr int_with_xhr_inflight.html", true, 0, &client);
950 950
951 ASSERT_EQ(blink::FrameStateComplete, toLocalFrame(webViewImpl->page()->mainF rame())->loader().state()); 951 ASSERT_EQ(FrameStateComplete, toLocalFrame(webViewImpl->page()->mainFrame()) ->loader().state());
952 EXPECT_TRUE(client.printCalled()); 952 EXPECT_TRUE(client.printCalled());
953 m_webViewHelper.reset(); 953 m_webViewHelper.reset();
954 } 954 }
955 955
956 class DropTask : public WebThread::Task { 956 class DropTask : public WebThread::Task {
957 public: 957 public:
958 explicit DropTask(WebView* webView) : m_webView(webView) 958 explicit DropTask(WebView* webView) : m_webView(webView)
959 { 959 {
960 } 960 }
961 961
962 virtual void run() OVERRIDE 962 virtual void run() OVERRIDE
963 { 963 {
964 const WebPoint clientPoint(0, 0); 964 const WebPoint clientPoint(0, 0);
965 const WebPoint screenPoint(0, 0); 965 const WebPoint screenPoint(0, 0);
966 m_webView->dragTargetDrop(clientPoint, screenPoint, 0); 966 m_webView->dragTargetDrop(clientPoint, screenPoint, 0);
967 } 967 }
968 968
969 private: 969 private:
970 WebView* const m_webView; 970 WebView* const m_webView;
971 }; 971 };
972 static void DragAndDropURL(WebViewImpl* webView, const std::string& url) 972 static void DragAndDropURL(WebViewImpl* webView, const std::string& url)
973 { 973 {
974 blink::WebDragData dragData; 974 WebDragData dragData;
975 dragData.initialize(); 975 dragData.initialize();
976 976
977 WebDragData::Item item; 977 WebDragData::Item item;
978 item.storageType = WebDragData::Item::StorageTypeString; 978 item.storageType = WebDragData::Item::StorageTypeString;
979 item.stringType = "text/uri-list"; 979 item.stringType = "text/uri-list";
980 item.stringData = WebString::fromUTF8(url); 980 item.stringData = WebString::fromUTF8(url);
981 dragData.addItem(item); 981 dragData.addItem(item);
982 982
983 const WebPoint clientPoint(0, 0); 983 const WebPoint clientPoint(0, 0);
984 const WebPoint screenPoint(0, 0); 984 const WebPoint screenPoint(0, 0);
985 webView->dragTargetDragEnter(dragData, clientPoint, screenPoint, blink::WebD ragOperationCopy, 0); 985 webView->dragTargetDragEnter(dragData, clientPoint, screenPoint, WebDragOper ationCopy, 0);
986 Platform::current()->currentThread()->postTask(new DropTask(webView)); 986 Platform::current()->currentThread()->postTask(new DropTask(webView));
987 FrameTestHelpers::pumpPendingRequestsDoNotUse(webView->mainFrame()); 987 FrameTestHelpers::pumpPendingRequestsDoNotUse(webView->mainFrame());
988 } 988 }
989 989
990 TEST_F(WebViewTest, DragDropURL) 990 TEST_F(WebViewTest, DragDropURL)
991 { 991 {
992 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "foo.html"); 992 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "foo.html");
993 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "bar.html"); 993 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "bar.html");
994 994
995 const std::string fooUrl = m_baseURL + "foo.html"; 995 const std::string fooUrl = m_baseURL + "foo.html";
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 private: 1051 private:
1052 bool m_contentDetectionRequested; 1052 bool m_contentDetectionRequested;
1053 bool m_pendingIntentsCancelled; 1053 bool m_pendingIntentsCancelled;
1054 WebURL m_scheduledIntentURL; 1054 WebURL m_scheduledIntentURL;
1055 WebContentDetectionResult m_contentDetectionResult; 1055 WebContentDetectionResult m_contentDetectionResult;
1056 }; 1056 };
1057 1057
1058 static bool tapElementById(WebView* webView, WebInputEvent::Type type, const Web String& id) 1058 static bool tapElementById(WebView* webView, WebInputEvent::Type type, const Web String& id)
1059 { 1059 {
1060 ASSERT(webView); 1060 ASSERT(webView);
1061 RefPtrWillBeRawPtr<blink::Element> element = static_cast<PassRefPtrWillBeRaw Ptr<blink::Element> >(webView->mainFrame()->document().getElementById(id)); 1061 RefPtrWillBeRawPtr<Element> element = static_cast<PassRefPtrWillBeRawPtr<Ele ment> >(webView->mainFrame()->document().getElementById(id));
1062 if (!element) 1062 if (!element)
1063 return false; 1063 return false;
1064 1064
1065 element->scrollIntoViewIfNeeded(); 1065 element->scrollIntoViewIfNeeded();
1066 blink::IntPoint center = element->screenRect().center(); 1066 IntPoint center = element->screenRect().center();
1067 1067
1068 WebGestureEvent event; 1068 WebGestureEvent event;
1069 event.type = type; 1069 event.type = type;
1070 event.x = center.x(); 1070 event.x = center.x();
1071 event.y = center.y(); 1071 event.y = center.y();
1072 1072
1073 webView->handleInputEvent(event); 1073 webView->handleInputEvent(event);
1074 runPendingTasks(); 1074 runPendingTasks();
1075 return true; 1075 return true;
1076 } 1076 }
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
1438 ViewCreatingWebViewClient client; 1438 ViewCreatingWebViewClient client;
1439 FrameTestHelpers::WebViewHelper m_webViewHelper; 1439 FrameTestHelpers::WebViewHelper m_webViewHelper;
1440 WebViewImpl* webViewImpl = m_webViewHelper.initialize(true, 0, &client); 1440 WebViewImpl* webViewImpl = m_webViewHelper.initialize(true, 0, &client);
1441 webViewImpl->page()->settings().setJavaScriptCanOpenWindowsAutomatically(tru e); 1441 webViewImpl->page()->settings().setJavaScriptCanOpenWindowsAutomatically(tru e);
1442 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewImpl->mainFrame()); 1442 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewImpl->mainFrame());
1443 frame->setName("_start"); 1443 frame->setName("_start");
1444 1444
1445 // Make a request that will open a new window 1445 // Make a request that will open a new window
1446 WebURLRequest webURLRequest; 1446 WebURLRequest webURLRequest;
1447 webURLRequest.initialize(); 1447 webURLRequest.initialize();
1448 blink::FrameLoadRequest request(0, webURLRequest.toResourceRequest(), "_blan k"); 1448 FrameLoadRequest request(0, webURLRequest.toResourceRequest(), "_blank");
1449 toLocalFrame(webViewImpl->page()->mainFrame())->loader().load(request); 1449 toLocalFrame(webViewImpl->page()->mainFrame())->loader().load(request);
1450 ASSERT_TRUE(client.createdWebView()); 1450 ASSERT_TRUE(client.createdWebView());
1451 EXPECT_FALSE(client.didFocusCalled()); 1451 EXPECT_FALSE(client.didFocusCalled());
1452 1452
1453 // Make a request from the new window that will navigate the original window . The original window should be focused. 1453 // Make a request from the new window that will navigate the original window . The original window should be focused.
1454 WebURLRequest webURLRequestWithTargetStart; 1454 WebURLRequest webURLRequestWithTargetStart;
1455 webURLRequestWithTargetStart.initialize(); 1455 webURLRequestWithTargetStart.initialize();
1456 blink::FrameLoadRequest requestWithTargetStart(0, webURLRequestWithTargetSta rt.toResourceRequest(), "_start"); 1456 FrameLoadRequest requestWithTargetStart(0, webURLRequestWithTargetStart.toRe sourceRequest(), "_start");
1457 toLocalFrame(toWebViewImpl(client.createdWebView())->page()->mainFrame())->l oader().load(requestWithTargetStart); 1457 toLocalFrame(toWebViewImpl(client.createdWebView())->page()->mainFrame())->l oader().load(requestWithTargetStart);
1458 EXPECT_TRUE(client.didFocusCalled()); 1458 EXPECT_TRUE(client.didFocusCalled());
1459 1459
1460 m_webViewHelper.reset(); // Remove dependency on locally scoped client. 1460 m_webViewHelper.reset(); // Remove dependency on locally scoped client.
1461 } 1461 }
1462 1462
1463 TEST_F(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus) 1463 TEST_F(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus)
1464 { 1464 {
1465 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "focusout_focusin_events.html"); 1465 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), "focusout_focusin_events.html");
1466 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "focusout_f ocusin_events.html", true, 0); 1466 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "focusout_f ocusin_events.html", true, 0);
(...skipping 13 matching lines...) Expand all
1480 1480
1481 webView->setFocus(true); 1481 webView->setFocus(true);
1482 webView->setFocus(false); 1482 webView->setFocus(false);
1483 webView->setFocus(true); 1483 webView->setFocus(true);
1484 1484
1485 WebElement element = webView->mainFrame()->document().getElementById("messag e"); 1485 WebElement element = webView->mainFrame()->document().getElementById("messag e");
1486 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.innerText().utf8().data()); 1486 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.innerText().utf8().data());
1487 } 1487 }
1488 1488
1489 #if !ENABLE(INPUT_MULTIPLE_FIELDS_UI) 1489 #if !ENABLE(INPUT_MULTIPLE_FIELDS_UI)
1490 static void openDateTimeChooser(WebView* webView, blink::HTMLInputElement* input Element) 1490 static void openDateTimeChooser(WebView* webView, HTMLInputElement* inputElement )
1491 { 1491 {
1492 inputElement->focus(); 1492 inputElement->focus();
1493 1493
1494 WebKeyboardEvent keyEvent; 1494 WebKeyboardEvent keyEvent;
1495 keyEvent.windowsKeyCode = blink::VKEY_SPACE; 1495 keyEvent.windowsKeyCode = VKEY_SPACE;
1496 keyEvent.type = WebInputEvent::RawKeyDown; 1496 keyEvent.type = WebInputEvent::RawKeyDown;
1497 keyEvent.setKeyIdentifierFromWindowsKeyCode(); 1497 keyEvent.setKeyIdentifierFromWindowsKeyCode();
1498 webView->handleInputEvent(keyEvent); 1498 webView->handleInputEvent(keyEvent);
1499 1499
1500 keyEvent.type = WebInputEvent::KeyUp; 1500 keyEvent.type = WebInputEvent::KeyUp;
1501 webView->handleInputEvent(keyEvent); 1501 webView->handleInputEvent(keyEvent);
1502 } 1502 }
1503 1503
1504 TEST_F(WebViewTest, ChooseValueFromDateTimeChooser) 1504 TEST_F(WebViewTest, ChooseValueFromDateTimeChooser)
1505 { 1505 {
1506 DateTimeChooserWebViewClient client; 1506 DateTimeChooserWebViewClient client;
1507 std::string url = m_baseURL + "date_time_chooser.html"; 1507 std::string url = m_baseURL + "date_time_chooser.html";
1508 URLTestHelpers::registerMockedURLLoad(toKURL(url), "date_time_chooser.html") ; 1508 URLTestHelpers::registerMockedURLLoad(toKURL(url), "date_time_chooser.html") ;
1509 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true, 0, & client); 1509 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true, 0, & client);
1510 1510
1511 blink::Document* document = webViewImpl->mainFrameImpl()->frame()->document( ); 1511 Document* document = webViewImpl->mainFrameImpl()->frame()->document();
1512 1512
1513 blink::HTMLInputElement* inputElement; 1513 HTMLInputElement* inputElement;
1514 1514
1515 inputElement = toHTMLInputElement(document->getElementById("date")); 1515 inputElement = toHTMLInputElement(document->getElementById("date"));
1516 openDateTimeChooser(webViewImpl, inputElement); 1516 openDateTimeChooser(webViewImpl, inputElement);
1517 client.chooserCompletion()->didChooseValue(0); 1517 client.chooserCompletion()->didChooseValue(0);
1518 client.clearChooserCompletion(); 1518 client.clearChooserCompletion();
1519 EXPECT_STREQ("1970-01-01", inputElement->value().utf8().data()); 1519 EXPECT_STREQ("1970-01-01", inputElement->value().utf8().data());
1520 1520
1521 openDateTimeChooser(webViewImpl, inputElement); 1521 openDateTimeChooser(webViewImpl, inputElement);
1522 client.chooserCompletion()->didChooseValue(std::numeric_limits<double>::quie t_NaN()); 1522 client.chooserCompletion()->didChooseValue(std::numeric_limits<double>::quie t_NaN());
1523 client.clearChooserCompletion(); 1523 client.clearChooserCompletion();
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
1722 // This test verifies that WebWidgetClient::hasTouchEventHandlers is called 1722 // This test verifies that WebWidgetClient::hasTouchEventHandlers is called
1723 // accordingly for various calls to EventHandlerRegistry::did{Add|Remove| 1723 // accordingly for various calls to EventHandlerRegistry::did{Add|Remove|
1724 // RemoveAll}EventHandler(..., TouchEvent). Verifying that those calls are made 1724 // RemoveAll}EventHandler(..., TouchEvent). Verifying that those calls are made
1725 // correctly is the job of LayoutTests/fast/events/event-handler-count.html. 1725 // correctly is the job of LayoutTests/fast/events/event-handler-count.html.
1726 TEST_F(WebViewTest, HasTouchEventHandlers) 1726 TEST_F(WebViewTest, HasTouchEventHandlers)
1727 { 1727 {
1728 TouchEventHandlerWebViewClient client; 1728 TouchEventHandlerWebViewClient client;
1729 std::string url = m_baseURL + "has_touch_event_handlers.html"; 1729 std::string url = m_baseURL + "has_touch_event_handlers.html";
1730 URLTestHelpers::registerMockedURLLoad(toKURL(url), "has_touch_event_handlers .html"); 1730 URLTestHelpers::registerMockedURLLoad(toKURL(url), "has_touch_event_handlers .html");
1731 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true, 0, & client); 1731 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true, 0, & client);
1732 const blink::EventHandlerRegistry::EventHandlerClass touchEvent = blink::Eve ntHandlerRegistry::TouchEvent; 1732 const EventHandlerRegistry::EventHandlerClass touchEvent = EventHandlerRegis try::TouchEvent;
1733 1733
1734 // The page is initialized with at least one no-handlers call. 1734 // The page is initialized with at least one no-handlers call.
1735 // In practice we get two such calls because WebViewHelper::initializeAndLoa d first 1735 // In practice we get two such calls because WebViewHelper::initializeAndLoa d first
1736 // initializes and empty frame, and then loads a document into it, so there are two 1736 // initializes and empty frame, and then loads a document into it, so there are two
1737 // FrameLoader::commitProvisionalLoad calls. 1737 // FrameLoader::commitProvisionalLoad calls.
1738 EXPECT_GE(client.getAndResetHasTouchEventHandlerCallCount(false), 1); 1738 EXPECT_GE(client.getAndResetHasTouchEventHandlerCallCount(false), 1);
1739 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true)); 1739 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true));
1740 1740
1741 // Adding the first document handler results in a has-handlers call. 1741 // Adding the first document handler results in a has-handlers call.
1742 blink::Document* document = webViewImpl->mainFrameImpl()->frame()->document( ); 1742 Document* document = webViewImpl->mainFrameImpl()->frame()->document();
1743 blink::EventHandlerRegistry* registry = &document->frameHost()->eventHandler Registry(); 1743 EventHandlerRegistry* registry = &document->frameHost()->eventHandlerRegistr y();
1744 registry->didAddEventHandler(*document, touchEvent); 1744 registry->didAddEventHandler(*document, touchEvent);
1745 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false)); 1745 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false));
1746 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true)); 1746 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true));
1747 1747
1748 // Adding another handler has no effect. 1748 // Adding another handler has no effect.
1749 registry->didAddEventHandler(*document, touchEvent); 1749 registry->didAddEventHandler(*document, touchEvent);
1750 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false)); 1750 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false));
1751 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true)); 1751 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true));
1752 1752
1753 // Removing the duplicate handler has no effect. 1753 // Removing the duplicate handler has no effect.
1754 registry->didRemoveEventHandler(*document, touchEvent); 1754 registry->didRemoveEventHandler(*document, touchEvent);
1755 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false)); 1755 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false));
1756 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true)); 1756 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true));
1757 1757
1758 // Removing the final handler results in a no-handlers call. 1758 // Removing the final handler results in a no-handlers call.
1759 registry->didRemoveEventHandler(*document, touchEvent); 1759 registry->didRemoveEventHandler(*document, touchEvent);
1760 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(false)); 1760 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(false));
1761 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true)); 1761 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true));
1762 1762
1763 // Adding a handler on a div results in a has-handlers call. 1763 // Adding a handler on a div results in a has-handlers call.
1764 blink::Element* parentDiv = document->getElementById("parentdiv"); 1764 Element* parentDiv = document->getElementById("parentdiv");
1765 ASSERT(parentDiv); 1765 ASSERT(parentDiv);
1766 registry->didAddEventHandler(*parentDiv, touchEvent); 1766 registry->didAddEventHandler(*parentDiv, touchEvent);
1767 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false)); 1767 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false));
1768 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true)); 1768 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true));
1769 1769
1770 // Adding a duplicate handler on the div, clearing all document handlers 1770 // Adding a duplicate handler on the div, clearing all document handlers
1771 // (of which there are none) and removing the extra handler on the div 1771 // (of which there are none) and removing the extra handler on the div
1772 // all have no effect. 1772 // all have no effect.
1773 registry->didAddEventHandler(*parentDiv, touchEvent); 1773 registry->didAddEventHandler(*parentDiv, touchEvent);
1774 registry->didRemoveAllEventHandlers(*document); 1774 registry->didRemoveAllEventHandlers(*document);
(...skipping 12 matching lines...) Expand all
1787 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false)); 1787 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false));
1788 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true)); 1788 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true));
1789 registry->didAddEventHandler(*parentDiv, touchEvent); 1789 registry->didAddEventHandler(*parentDiv, touchEvent);
1790 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false)); 1790 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false));
1791 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true)); 1791 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true));
1792 registry->didRemoveAllEventHandlers(*parentDiv); 1792 registry->didRemoveAllEventHandlers(*parentDiv);
1793 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(false)); 1793 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(false));
1794 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true)); 1794 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(true));
1795 1795
1796 // Adding a handler inside of a child iframe results in a has-handlers call. 1796 // Adding a handler inside of a child iframe results in a has-handlers call.
1797 blink::Element* childFrame = document->getElementById("childframe"); 1797 Element* childFrame = document->getElementById("childframe");
1798 ASSERT(childFrame); 1798 ASSERT(childFrame);
1799 blink::Document* childDocument = toHTMLIFrameElement(childFrame)->contentDoc ument(); 1799 Document* childDocument = toHTMLIFrameElement(childFrame)->contentDocument() ;
1800 blink::Element* childDiv = childDocument->getElementById("childdiv"); 1800 Element* childDiv = childDocument->getElementById("childdiv");
1801 ASSERT(childDiv); 1801 ASSERT(childDiv);
1802 registry->didAddEventHandler(*childDiv, touchEvent); 1802 registry->didAddEventHandler(*childDiv, touchEvent);
1803 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false)); 1803 EXPECT_EQ(0, client.getAndResetHasTouchEventHandlerCallCount(false));
1804 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true)); 1804 EXPECT_EQ(1, client.getAndResetHasTouchEventHandlerCallCount(true));
1805 1805
1806 // Adding and clearing handlers in the parent doc or elsewhere in the child doc 1806 // Adding and clearing handlers in the parent doc or elsewhere in the child doc
1807 // has no impact. 1807 // has no impact.
1808 registry->didAddEventHandler(*document, touchEvent); 1808 registry->didAddEventHandler(*document, touchEvent);
1809 registry->didAddEventHandler(*childFrame, touchEvent); 1809 registry->didAddEventHandler(*childFrame, touchEvent);
1810 registry->didAddEventHandler(*childDocument, touchEvent); 1810 registry->didAddEventHandler(*childDocument, touchEvent);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1845 // This test checks that deleting nodes which have only non-JS-registered touch 1845 // This test checks that deleting nodes which have only non-JS-registered touch
1846 // handlers also removes them from the event handler registry. Note that this 1846 // handlers also removes them from the event handler registry. Note that this
1847 // is different from detaching and re-attaching the same node, which is covered 1847 // is different from detaching and re-attaching the same node, which is covered
1848 // by layout tests under fast/events/. 1848 // by layout tests under fast/events/.
1849 TEST_F(WebViewTest, DeleteElementWithRegisteredHandler) 1849 TEST_F(WebViewTest, DeleteElementWithRegisteredHandler)
1850 { 1850 {
1851 std::string url = m_baseURL + "simple_div.html"; 1851 std::string url = m_baseURL + "simple_div.html";
1852 URLTestHelpers::registerMockedURLLoad(toKURL(url), "simple_div.html"); 1852 URLTestHelpers::registerMockedURLLoad(toKURL(url), "simple_div.html");
1853 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); 1853 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true);
1854 1854
1855 RefPtrWillBePersistent<blink::Document> document = webViewImpl->mainFrameImp l()->frame()->document(); 1855 RefPtrWillBePersistent<Document> document = webViewImpl->mainFrameImpl()->fr ame()->document();
1856 blink::Element* div = document->getElementById("div"); 1856 Element* div = document->getElementById("div");
1857 blink::EventHandlerRegistry& registry = document->frameHost()->eventHandlerR egistry(); 1857 EventHandlerRegistry& registry = document->frameHost()->eventHandlerRegistry ();
1858 1858
1859 registry.didAddEventHandler(*div, blink::EventHandlerRegistry::ScrollEvent); 1859 registry.didAddEventHandler(*div, EventHandlerRegistry::ScrollEvent);
1860 EXPECT_TRUE(registry.hasEventHandlers(blink::EventHandlerRegistry::ScrollEve nt)); 1860 EXPECT_TRUE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent));
1861 1861
1862 blink::TrackExceptionState exceptionState; 1862 TrackExceptionState exceptionState;
1863 div->remove(exceptionState); 1863 div->remove(exceptionState);
1864 #if ENABLE(OILPAN) 1864 #if ENABLE(OILPAN)
1865 // For oilpan we have to force a GC to ensure the event handlers have been r emoved when 1865 // For oilpan we have to force a GC to ensure the event handlers have been r emoved when
1866 // checking below. We do a precise GC (collectAllGarbage does not scan the s tack) 1866 // checking below. We do a precise GC (collectAllGarbage does not scan the s tack)
1867 // to ensure the div element dies. This is also why the Document is in a Per sistent 1867 // to ensure the div element dies. This is also why the Document is in a Per sistent
1868 // since we want that to stay around. 1868 // since we want that to stay around.
1869 Heap::collectAllGarbage(); 1869 Heap::collectAllGarbage();
1870 #endif 1870 #endif
1871 EXPECT_FALSE(registry.hasEventHandlers(blink::EventHandlerRegistry::ScrollEv ent)); 1871 EXPECT_FALSE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent));
1872 } 1872 }
1873 1873
1874 static WebRect ExpectedRootBounds(blink::Document* document, float scaleFactor) 1874 static WebRect ExpectedRootBounds(Document* document, float scaleFactor)
1875 { 1875 {
1876 blink::Element* element = document->getElementById("root"); 1876 Element* element = document->getElementById("root");
1877 if (!element) 1877 if (!element)
1878 element = document->getElementById("target"); 1878 element = document->getElementById("target");
1879 if (element->hasTagName(blink::HTMLNames::iframeTag)) 1879 if (element->hasTagName(HTMLNames::iframeTag))
1880 return ExpectedRootBounds(toHTMLIFrameElement(element)->contentDocument( ), scaleFactor); 1880 return ExpectedRootBounds(toHTMLIFrameElement(element)->contentDocument( ), scaleFactor);
1881 1881
1882 blink::IntRect boundingBox; 1882 IntRect boundingBox;
1883 if (element->hasTagName(blink::HTMLNames::htmlTag)) 1883 if (element->hasTagName(HTMLNames::htmlTag))
1884 boundingBox = blink::IntRect(blink::IntPoint(0, 0), document->frame()->v iew()->contentsSize()); 1884 boundingBox = IntRect(IntPoint(0, 0), document->frame()->view()->content sSize());
1885 else 1885 else
1886 boundingBox = element->pixelSnappedBoundingBox(); 1886 boundingBox = element->pixelSnappedBoundingBox();
1887 boundingBox = document->frame()->view()->contentsToWindow(boundingBox); 1887 boundingBox = document->frame()->view()->contentsToWindow(boundingBox);
1888 boundingBox.scale(scaleFactor); 1888 boundingBox.scale(scaleFactor);
1889 return boundingBox; 1889 return boundingBox;
1890 } 1890 }
1891 1891
1892 void WebViewTest::testSelectionRootBounds(const char* htmlFile, float pageScaleF actor) 1892 void WebViewTest::testSelectionRootBounds(const char* htmlFile, float pageScaleF actor)
1893 { 1893 {
1894 std::string url = m_baseURL + htmlFile; 1894 std::string url = m_baseURL + htmlFile;
1895 1895
1896 WebView* webView = m_webViewHelper.initializeAndLoad(url, true); 1896 WebView* webView = m_webViewHelper.initializeAndLoad(url, true);
1897 webView->resize(WebSize(640, 480)); 1897 webView->resize(WebSize(640, 480));
1898 webView->setPageScaleFactor(pageScaleFactor); 1898 webView->setPageScaleFactor(pageScaleFactor);
1899 webView->layout(); 1899 webView->layout();
1900 runPendingTasks(); 1900 runPendingTasks();
1901 1901
1902 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame()); 1902 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webView->mainFrame());
1903 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument()); 1903 EXPECT_TRUE(frame->frame()->document()->isHTMLDocument());
1904 blink::HTMLDocument* document = blink::toHTMLDocument(frame->frame()->docume nt()); 1904 HTMLDocument* document = toHTMLDocument(frame->frame()->document());
1905 1905
1906 WebRect expectedRootBounds = ExpectedRootBounds(document, webView->pageScale Factor()); 1906 WebRect expectedRootBounds = ExpectedRootBounds(document, webView->pageScale Factor());
1907 WebRect actualRootBounds; 1907 WebRect actualRootBounds;
1908 webView->getSelectionRootBounds(actualRootBounds); 1908 webView->getSelectionRootBounds(actualRootBounds);
1909 ASSERT_EQ(expectedRootBounds, actualRootBounds); 1909 ASSERT_EQ(expectedRootBounds, actualRootBounds);
1910 1910
1911 WebRect anchor, focus; 1911 WebRect anchor, focus;
1912 webView->selectionBounds(anchor, focus); 1912 webView->selectionBounds(anchor, focus);
1913 blink::IntRect expectedIntRect = expectedRootBounds; 1913 IntRect expectedIntRect = expectedRootBounds;
1914 ASSERT_TRUE(expectedIntRect.contains(anchor)); 1914 ASSERT_TRUE(expectedIntRect.contains(anchor));
1915 // The "overflow" tests have the focus boundary outside of the element box. 1915 // The "overflow" tests have the focus boundary outside of the element box.
1916 ASSERT_EQ(url.find("overflow") == std::string::npos, expectedIntRect.contain s(focus)); 1916 ASSERT_EQ(url.find("overflow") == std::string::npos, expectedIntRect.contain s(focus));
1917 } 1917 }
1918 1918
1919 TEST_F(WebViewTest, GetSelectionRootBounds) 1919 TEST_F(WebViewTest, GetSelectionRootBounds)
1920 { 1920 {
1921 // Register all the pages we will be using. 1921 // Register all the pages we will be using.
1922 registerMockedHttpURLLoad("select_range_basic.html"); 1922 registerMockedHttpURLLoad("select_range_basic.html");
1923 registerMockedHttpURLLoad("select_range_div_editable.html"); 1923 registerMockedHttpURLLoad("select_range_div_editable.html");
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
2012 // called iff value of a focused element is modified via script. 2012 // called iff value of a focused element is modified via script.
2013 TEST_F(WebViewTest, NonUserInputTextUpdate) 2013 TEST_F(WebViewTest, NonUserInputTextUpdate)
2014 { 2014 {
2015 NonUserInputTextUpdateWebViewClient client; 2015 NonUserInputTextUpdateWebViewClient client;
2016 std::string url = m_baseURL + "non_user_input_text_update.html"; 2016 std::string url = m_baseURL + "non_user_input_text_update.html";
2017 URLTestHelpers::registerMockedURLLoad(toKURL(url), "non_user_input_text_upda te.html"); 2017 URLTestHelpers::registerMockedURLLoad(toKURL(url), "non_user_input_text_upda te.html");
2018 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true, 0, & client); 2018 WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true, 0, & client);
2019 webViewImpl->setInitialFocus(false); 2019 webViewImpl->setInitialFocus(false);
2020 2020
2021 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewImpl->mainFrame()); 2021 WebLocalFrameImpl* frame = toWebLocalFrameImpl(webViewImpl->mainFrame());
2022 blink::HTMLDocument* document = blink::toHTMLDocument(frame->frame()->docume nt()); 2022 HTMLDocument* document = toHTMLDocument(frame->frame()->document());
2023 2023
2024 // (A) <input> 2024 // (A) <input>
2025 // (A.1) Focused and value is changed by script. 2025 // (A.1) Focused and value is changed by script.
2026 client.reset(); 2026 client.reset();
2027 EXPECT_FALSE(client.textIsUpdated()); 2027 EXPECT_FALSE(client.textIsUpdated());
2028 2028
2029 blink::HTMLInputElement* inputElement = toHTMLInputElement(document->getElem entById("input")); 2029 HTMLInputElement* inputElement = toHTMLInputElement(document->getElementById ("input"));
2030 document->setFocusedElement(inputElement); 2030 document->setFocusedElement(inputElement);
2031 webViewImpl->setFocus(true); 2031 webViewImpl->setFocus(true);
2032 EXPECT_EQ(document->focusedElement(), static_cast<blink::Element*>(inputElem ent)); 2032 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(inputElement));
2033 2033
2034 // Emulate value change from script. 2034 // Emulate value change from script.
2035 inputElement->setValue("testA"); 2035 inputElement->setValue("testA");
2036 EXPECT_TRUE(client.textIsUpdated()); 2036 EXPECT_TRUE(client.textIsUpdated());
2037 WebTextInputInfo info = webViewImpl->textInputInfo(); 2037 WebTextInputInfo info = webViewImpl->textInputInfo();
2038 EXPECT_EQ("testA", std::string(info.value.utf8().data())); 2038 EXPECT_EQ("testA", std::string(info.value.utf8().data()));
2039 2039
2040 // (A.2) Focused and user input modifies value. 2040 // (A.2) Focused and user input modifies value.
2041 client.reset(); 2041 client.reset();
2042 EXPECT_FALSE(client.textIsUpdated()); 2042 EXPECT_FALSE(client.textIsUpdated());
2043 2043
2044 WebVector<WebCompositionUnderline> emptyUnderlines; 2044 WebVector<WebCompositionUnderline> emptyUnderlines;
2045 webViewImpl->setComposition(WebString::fromUTF8("2"), emptyUnderlines, 1, 1) ; 2045 webViewImpl->setComposition(WebString::fromUTF8("2"), emptyUnderlines, 1, 1) ;
2046 webViewImpl->confirmComposition(WebWidget::KeepSelection); 2046 webViewImpl->confirmComposition(WebWidget::KeepSelection);
2047 EXPECT_FALSE(client.textIsUpdated()); 2047 EXPECT_FALSE(client.textIsUpdated());
2048 info = webViewImpl->textInputInfo(); 2048 info = webViewImpl->textInputInfo();
2049 EXPECT_EQ("testA2", std::string(info.value.utf8().data())); 2049 EXPECT_EQ("testA2", std::string(info.value.utf8().data()));
2050 2050
2051 // (A.3) Unfocused and value is changed by script. 2051 // (A.3) Unfocused and value is changed by script.
2052 client.reset(); 2052 client.reset();
2053 EXPECT_FALSE(client.textIsUpdated()); 2053 EXPECT_FALSE(client.textIsUpdated());
2054 document->setFocusedElement(nullptr); 2054 document->setFocusedElement(nullptr);
2055 webViewImpl->setFocus(false); 2055 webViewImpl->setFocus(false);
2056 EXPECT_NE(document->focusedElement(), static_cast<blink::Element*>(inputElem ent)); 2056 EXPECT_NE(document->focusedElement(), static_cast<Element*>(inputElement));
2057 inputElement->setValue("testA3"); 2057 inputElement->setValue("testA3");
2058 EXPECT_FALSE(client.textIsUpdated()); 2058 EXPECT_FALSE(client.textIsUpdated());
2059 2059
2060 // (B) <textarea> 2060 // (B) <textarea>
2061 // (B.1) Focused and value is changed by script. 2061 // (B.1) Focused and value is changed by script.
2062 client.reset(); 2062 client.reset();
2063 EXPECT_FALSE(client.textIsUpdated()); 2063 EXPECT_FALSE(client.textIsUpdated());
2064 blink::HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement(document ->getElementById("textarea")); 2064 HTMLTextAreaElement* textAreaElement = toHTMLTextAreaElement(document->getEl ementById("textarea"));
2065 document->setFocusedElement(textAreaElement); 2065 document->setFocusedElement(textAreaElement);
2066 webViewImpl->setFocus(true); 2066 webViewImpl->setFocus(true);
2067 EXPECT_EQ(document->focusedElement(), static_cast<blink::Element*>(textAreaE lement)); 2067 EXPECT_EQ(document->focusedElement(), static_cast<Element*>(textAreaElement) );
2068 textAreaElement->setValue("testB"); 2068 textAreaElement->setValue("testB");
2069 EXPECT_TRUE(client.textIsUpdated()); 2069 EXPECT_TRUE(client.textIsUpdated());
2070 info = webViewImpl->textInputInfo(); 2070 info = webViewImpl->textInputInfo();
2071 EXPECT_EQ("testB", std::string(info.value.utf8().data())); 2071 EXPECT_EQ("testB", std::string(info.value.utf8().data()));
2072 2072
2073 // (B.2) Focused and user input modifies value. 2073 // (B.2) Focused and user input modifies value.
2074 client.reset(); 2074 client.reset();
2075 EXPECT_FALSE(client.textIsUpdated()); 2075 EXPECT_FALSE(client.textIsUpdated());
2076 webViewImpl->setComposition(WebString::fromUTF8("2"), emptyUnderlines, 1, 1) ; 2076 webViewImpl->setComposition(WebString::fromUTF8("2"), emptyUnderlines, 1, 1) ;
2077 webViewImpl->confirmComposition(WebWidget::KeepSelection); 2077 webViewImpl->confirmComposition(WebWidget::KeepSelection);
2078 info = webViewImpl->textInputInfo(); 2078 info = webViewImpl->textInputInfo();
2079 EXPECT_EQ("testB2", std::string(info.value.utf8().data())); 2079 EXPECT_EQ("testB2", std::string(info.value.utf8().data()));
2080 2080
2081 // (B.3) Unfocused and value is changed by script. 2081 // (B.3) Unfocused and value is changed by script.
2082 client.reset(); 2082 client.reset();
2083 EXPECT_FALSE(client.textIsUpdated()); 2083 EXPECT_FALSE(client.textIsUpdated());
2084 document->setFocusedElement(nullptr); 2084 document->setFocusedElement(nullptr);
2085 webViewImpl->setFocus(false); 2085 webViewImpl->setFocus(false);
2086 EXPECT_NE(document->focusedElement(), static_cast<blink::Element*>(textAreaE lement)); 2086 EXPECT_NE(document->focusedElement(), static_cast<Element*>(textAreaElement) );
2087 inputElement->setValue("testB3"); 2087 inputElement->setValue("testB3");
2088 EXPECT_FALSE(client.textIsUpdated()); 2088 EXPECT_FALSE(client.textIsUpdated());
2089 2089
2090 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient. 2090 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient.
2091 m_webViewHelper.reset(); 2091 m_webViewHelper.reset();
2092 } 2092 }
2093 2093
2094 // Check that the WebAutofillClient is correctly notified about first user 2094 // Check that the WebAutofillClient is correctly notified about first user
2095 // gestures after load, following various input events. 2095 // gestures after load, following various input events.
2096 TEST_F(WebViewTest, FirstUserGestureObservedKeyEvent) 2096 TEST_F(WebViewTest, FirstUserGestureObservedKeyEvent)
2097 { 2097 {
2098 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("form.html")); 2098 URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c _str()), WebString::fromUTF8("form.html"));
2099 MockAutofillClient client; 2099 MockAutofillClient client;
2100 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html" , true); 2100 WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "form.html" , true);
2101 webView->setAutofillClient(&client); 2101 webView->setAutofillClient(&client);
2102 webView->setInitialFocus(false); 2102 webView->setInitialFocus(false);
2103 2103
2104 EXPECT_EQ(0, client.getUserGestureNotificationsCount()); 2104 EXPECT_EQ(0, client.getUserGestureNotificationsCount());
2105 2105
2106 WebKeyboardEvent keyEvent; 2106 WebKeyboardEvent keyEvent;
2107 keyEvent.windowsKeyCode = blink::VKEY_SPACE; 2107 keyEvent.windowsKeyCode = VKEY_SPACE;
2108 keyEvent.type = WebInputEvent::RawKeyDown; 2108 keyEvent.type = WebInputEvent::RawKeyDown;
2109 keyEvent.setKeyIdentifierFromWindowsKeyCode(); 2109 keyEvent.setKeyIdentifierFromWindowsKeyCode();
2110 webView->handleInputEvent(keyEvent); 2110 webView->handleInputEvent(keyEvent);
2111 keyEvent.type = WebInputEvent::KeyUp; 2111 keyEvent.type = WebInputEvent::KeyUp;
2112 webView->handleInputEvent(keyEvent); 2112 webView->handleInputEvent(keyEvent);
2113 2113
2114 EXPECT_EQ(1, client.getUserGestureNotificationsCount()); 2114 EXPECT_EQ(1, client.getUserGestureNotificationsCount());
2115 webView->setAutofillClient(0); 2115 webView->setAutofillClient(0);
2116 } 2116 }
2117 2117
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2171 2171
2172 TEST_F(WebViewTest, AutoResizeSubtreeLayout) 2172 TEST_F(WebViewTest, AutoResizeSubtreeLayout)
2173 { 2173 {
2174 std::string url = m_baseURL + "subtree-layout.html"; 2174 std::string url = m_baseURL + "subtree-layout.html";
2175 URLTestHelpers::registerMockedURLLoad(toKURL(url), "subtree-layout.html"); 2175 URLTestHelpers::registerMockedURLLoad(toKURL(url), "subtree-layout.html");
2176 WebView* webView = m_webViewHelper.initialize(true); 2176 WebView* webView = m_webViewHelper.initialize(true);
2177 2177
2178 webView->enableAutoResizeMode(WebSize(200, 200), WebSize(200, 200)); 2178 webView->enableAutoResizeMode(WebSize(200, 200), WebSize(200, 200));
2179 loadFrame(webView->mainFrame(), url); 2179 loadFrame(webView->mainFrame(), url);
2180 2180
2181 blink::FrameView* frameView = m_webViewHelper.webViewImpl()->mainFrameImpl() ->frameView(); 2181 FrameView* frameView = m_webViewHelper.webViewImpl()->mainFrameImpl()->frame View();
2182 2182
2183 // Auto-resizing used to ASSERT(needsLayout()) in RenderBlockFlow::layout. T his EXPECT is 2183 // Auto-resizing used to ASSERT(needsLayout()) in RenderBlockFlow::layout. T his EXPECT is
2184 // merely a dummy. The real test is that we don't trigger asserts in debug b uilds. 2184 // merely a dummy. The real test is that we don't trigger asserts in debug b uilds.
2185 EXPECT_FALSE(frameView->needsLayout()); 2185 EXPECT_FALSE(frameView->needsLayout());
2186 }; 2186 };
2187 2187
2188 } // namespace 2188 } // namespace
OLDNEW
« no previous file with comments | « Source/web/tests/WebUnitTests.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698