| OLD | NEW | 
|     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 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1227 TEST_F(WebViewTest, BackForwardRestoreScroll) |  1227 TEST_F(WebViewTest, BackForwardRestoreScroll) | 
|  1228 { |  1228 { | 
|  1229     URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c
      _str()), WebString::fromUTF8("back_forward_restore_scroll.html")); |  1229     URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c
      _str()), WebString::fromUTF8("back_forward_restore_scroll.html")); | 
|  1230     WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "ba
      ck_forward_restore_scroll.html"); |  1230     WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(m_baseURL + "ba
      ck_forward_restore_scroll.html"); | 
|  1231     webViewImpl->resize(WebSize(640, 480)); |  1231     webViewImpl->resize(WebSize(640, 480)); | 
|  1232     webViewImpl->updateAllLifecyclePhases(); |  1232     webViewImpl->updateAllLifecyclePhases(); | 
|  1233  |  1233  | 
|  1234     // Emulate a user scroll |  1234     // Emulate a user scroll | 
|  1235     webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 900)); |  1235     webViewImpl->mainFrame()->setScrollOffset(WebSize(0, 900)); | 
|  1236     LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame()); |  1236     LocalFrame* mainFrameLocal = toLocalFrame(webViewImpl->page()->mainFrame()); | 
|  1237     RefPtrWillBePersistent<HistoryItem> item1 = mainFrameLocal->loader().current
      Item(); |  1237     Persistent<HistoryItem> item1 = mainFrameLocal->loader().currentItem(); | 
|  1238  |  1238  | 
|  1239     // Click an anchor |  1239     // Click an anchor | 
|  1240     mainFrameLocal->loader().load(FrameLoadRequest(mainFrameLocal->document(), R
      esourceRequest(mainFrameLocal->document()->completeURL("#a")))); |  1240     mainFrameLocal->loader().load(FrameLoadRequest(mainFrameLocal->document(), R
      esourceRequest(mainFrameLocal->document()->completeURL("#a")))); | 
|  1241     RefPtrWillBePersistent<HistoryItem> item2 = mainFrameLocal->loader().current
      Item(); |  1241     Persistent<HistoryItem> item2 = mainFrameLocal->loader().currentItem(); | 
|  1242  |  1242  | 
|  1243     // Go back, then forward, then back again. |  1243     // Go back, then forward, then back again. | 
|  1244     mainFrameLocal->loader().load( |  1244     mainFrameLocal->loader().load( | 
|  1245         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( |  1245         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( | 
|  1246             item1.get(), UseProtocolCachePolicy)), |  1246             item1.get(), UseProtocolCachePolicy)), | 
|  1247         FrameLoadTypeBackForward, item1.get(), HistorySameDocumentLoad); |  1247         FrameLoadTypeBackForward, item1.get(), HistorySameDocumentLoad); | 
|  1248     mainFrameLocal->loader().load( |  1248     mainFrameLocal->loader().load( | 
|  1249         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( |  1249         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( | 
|  1250             item2.get(), UseProtocolCachePolicy)), |  1250             item2.get(), UseProtocolCachePolicy)), | 
|  1251         FrameLoadTypeBackForward, item2.get(), HistorySameDocumentLoad); |  1251         FrameLoadTypeBackForward, item2.get(), HistorySameDocumentLoad); | 
|  1252     mainFrameLocal->loader().load( |  1252     mainFrameLocal->loader().load( | 
|  1253         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( |  1253         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( | 
|  1254             item1.get(), UseProtocolCachePolicy)), |  1254             item1.get(), UseProtocolCachePolicy)), | 
|  1255         FrameLoadTypeBackForward, item1.get(), HistorySameDocumentLoad); |  1255         FrameLoadTypeBackForward, item1.get(), HistorySameDocumentLoad); | 
|  1256  |  1256  | 
|  1257     // Click a different anchor |  1257     // Click a different anchor | 
|  1258     mainFrameLocal->loader().load(FrameLoadRequest(mainFrameLocal->document(), R
      esourceRequest(mainFrameLocal->document()->completeURL("#b")))); |  1258     mainFrameLocal->loader().load(FrameLoadRequest(mainFrameLocal->document(), R
      esourceRequest(mainFrameLocal->document()->completeURL("#b")))); | 
|  1259     RefPtrWillBePersistent<HistoryItem> item3 = mainFrameLocal->loader().current
      Item(); |  1259     Persistent<HistoryItem> item3 = mainFrameLocal->loader().currentItem(); | 
|  1260  |  1260  | 
|  1261     // Go back, then forward. The scroll position should be properly set on the 
      forward navigation. |  1261     // Go back, then forward. The scroll position should be properly set on the 
      forward navigation. | 
|  1262     mainFrameLocal->loader().load( |  1262     mainFrameLocal->loader().load( | 
|  1263         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( |  1263         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( | 
|  1264             item1.get(), UseProtocolCachePolicy)), |  1264             item1.get(), UseProtocolCachePolicy)), | 
|  1265         FrameLoadTypeBackForward, item1.get(), HistorySameDocumentLoad); |  1265         FrameLoadTypeBackForward, item1.get(), HistorySameDocumentLoad); | 
|  1266     mainFrameLocal->loader().load( |  1266     mainFrameLocal->loader().load( | 
|  1267         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( |  1267         FrameLoadRequest(nullptr, FrameLoader::resourceRequestFromHistoryItem( | 
|  1268             item3.get(), UseProtocolCachePolicy)), |  1268             item3.get(), UseProtocolCachePolicy)), | 
|  1269         FrameLoadTypeBackForward, item3.get(), HistorySameDocumentLoad); |  1269         FrameLoadTypeBackForward, item3.get(), HistorySameDocumentLoad); | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
|  1284     // Make the page scale and scroll with the given paremeters. |  1284     // Make the page scale and scroll with the given paremeters. | 
|  1285     webViewImpl->setPageScaleFactor(2.0f); |  1285     webViewImpl->setPageScaleFactor(2.0f); | 
|  1286     webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); |  1286     webViewImpl->mainFrame()->setScrollOffset(WebSize(94, 111)); | 
|  1287     webViewImpl->setVisualViewportOffset(WebFloatPoint(12, 20)); |  1287     webViewImpl->setVisualViewportOffset(WebFloatPoint(12, 20)); | 
|  1288     EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); |  1288     EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); | 
|  1289     EXPECT_EQ(94, webViewImpl->mainFrame()->scrollOffset().width); |  1289     EXPECT_EQ(94, webViewImpl->mainFrame()->scrollOffset().width); | 
|  1290     EXPECT_EQ(111, webViewImpl->mainFrame()->scrollOffset().height); |  1290     EXPECT_EQ(111, webViewImpl->mainFrame()->scrollOffset().height); | 
|  1291     EXPECT_EQ(12, webViewImpl->visualViewportOffset().x); |  1291     EXPECT_EQ(12, webViewImpl->visualViewportOffset().x); | 
|  1292     EXPECT_EQ(20, webViewImpl->visualViewportOffset().y); |  1292     EXPECT_EQ(20, webViewImpl->visualViewportOffset().y); | 
|  1293  |  1293  | 
|  1294     RefPtrWillBeRawPtr<Element> element = static_cast<PassRefPtrWillBeRawPtr<Ele
      ment>>(webViewImpl->mainFrame()->document().body()); |  1294     RawPtr<Element> element = static_cast<RawPtr<Element>>(webViewImpl->mainFram
      e()->document().body()); | 
|  1295     webViewImpl->enterFullScreenForElement(element.get()); |  1295     webViewImpl->enterFullScreenForElement(element.get()); | 
|  1296     webViewImpl->didEnterFullScreen(); |  1296     webViewImpl->didEnterFullScreen(); | 
|  1297  |  1297  | 
|  1298     // Page scale factor must be 1.0 during fullscreen for elements to be sized |  1298     // Page scale factor must be 1.0 during fullscreen for elements to be sized | 
|  1299     // properly. |  1299     // properly. | 
|  1300     EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor()); |  1300     EXPECT_EQ(1.0f, webViewImpl->pageScaleFactor()); | 
|  1301  |  1301  | 
|  1302     // Make sure fullscreen nesting doesn't disrupt scroll/scale saving. |  1302     // Make sure fullscreen nesting doesn't disrupt scroll/scale saving. | 
|  1303     RefPtrWillBeRawPtr<Element> otherElement = static_cast<PassRefPtrWillBeRawPt
      r<Element>>(webViewImpl->mainFrame()->document().head()); |  1303     RawPtr<Element> otherElement = static_cast<RawPtr<Element>>(webViewImpl->mai
      nFrame()->document().head()); | 
|  1304     webViewImpl->enterFullScreenForElement(otherElement.get()); |  1304     webViewImpl->enterFullScreenForElement(otherElement.get()); | 
|  1305  |  1305  | 
|  1306     // Confirm that exiting fullscreen restores the parameters. |  1306     // Confirm that exiting fullscreen restores the parameters. | 
|  1307     webViewImpl->didExitFullScreen(); |  1307     webViewImpl->didExitFullScreen(); | 
|  1308     EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); |  1308     EXPECT_EQ(2.0f, webViewImpl->pageScaleFactor()); | 
|  1309     EXPECT_EQ(94, webViewImpl->mainFrame()->scrollOffset().width); |  1309     EXPECT_EQ(94, webViewImpl->mainFrame()->scrollOffset().width); | 
|  1310     EXPECT_EQ(111, webViewImpl->mainFrame()->scrollOffset().height); |  1310     EXPECT_EQ(111, webViewImpl->mainFrame()->scrollOffset().height); | 
|  1311     EXPECT_EQ(12, webViewImpl->visualViewportOffset().x); |  1311     EXPECT_EQ(12, webViewImpl->visualViewportOffset().x); | 
|  1312     EXPECT_EQ(20, webViewImpl->visualViewportOffset().y); |  1312     EXPECT_EQ(20, webViewImpl->visualViewportOffset().y); | 
|  1313  |  1313  | 
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1444     void setContentDetectionResult(const WebContentDetectionResult& result) { m_
      contentDetectionResult = result; } |  1444     void setContentDetectionResult(const WebContentDetectionResult& result) { m_
      contentDetectionResult = result; } | 
|  1445  |  1445  | 
|  1446 private: |  1446 private: | 
|  1447     bool m_contentDetectionRequested; |  1447     bool m_contentDetectionRequested; | 
|  1448     bool m_pendingIntentsCancelled; |  1448     bool m_pendingIntentsCancelled; | 
|  1449     WebURL m_scheduledIntentURL; |  1449     WebURL m_scheduledIntentURL; | 
|  1450     bool m_wasInMainFrame; |  1450     bool m_wasInMainFrame; | 
|  1451     WebContentDetectionResult m_contentDetectionResult; |  1451     WebContentDetectionResult m_contentDetectionResult; | 
|  1452 }; |  1452 }; | 
|  1453  |  1453  | 
|  1454 static bool tapElement(WebView* webView, WebInputEvent::Type type, const PassRef
      PtrWillBeRawPtr<Element>& element) |  1454 static bool tapElement(WebView* webView, WebInputEvent::Type type, const RawPtr<
      Element>& element) | 
|  1455 { |  1455 { | 
|  1456     if (!element) |  1456     if (!element) | 
|  1457         return false; |  1457         return false; | 
|  1458  |  1458  | 
|  1459     element->scrollIntoViewIfNeeded(); |  1459     element->scrollIntoViewIfNeeded(); | 
|  1460  |  1460  | 
|  1461     // TODO(bokan): Technically incorrect, event positions should be in viewport
       space. crbug.com/371902. |  1461     // TODO(bokan): Technically incorrect, event positions should be in viewport
       space. crbug.com/371902. | 
|  1462     IntPoint center = element->screenRect().center(); |  1462     IntPoint center = element->screenRect().center(); | 
|  1463  |  1463  | 
|  1464     WebGestureEvent event; |  1464     WebGestureEvent event; | 
|  1465     event.type = type; |  1465     event.type = type; | 
|  1466     event.sourceDevice = WebGestureDeviceTouchscreen; |  1466     event.sourceDevice = WebGestureDeviceTouchscreen; | 
|  1467     event.x = center.x(); |  1467     event.x = center.x(); | 
|  1468     event.y = center.y(); |  1468     event.y = center.y(); | 
|  1469  |  1469  | 
|  1470     ASSERT(webView); |  1470     ASSERT(webView); | 
|  1471     webView->handleInputEvent(event); |  1471     webView->handleInputEvent(event); | 
|  1472     runPendingTasks(); |  1472     runPendingTasks(); | 
|  1473     return true; |  1473     return true; | 
|  1474 } |  1474 } | 
|  1475  |  1475  | 
|  1476 static bool tapElementById(WebView* webView, WebInputEvent::Type type, const Web
      String& id) |  1476 static bool tapElementById(WebView* webView, WebInputEvent::Type type, const Web
      String& id) | 
|  1477 { |  1477 { | 
|  1478     ASSERT(webView); |  1478     ASSERT(webView); | 
|  1479     RefPtrWillBeRawPtr<Element> element = static_cast<PassRefPtrWillBeRawPtr<Ele
      ment>>(webView->mainFrame()->document().getElementById(id)); |  1479     RawPtr<Element> element = static_cast<RawPtr<Element>>(webView->mainFrame()-
      >document().getElementById(id)); | 
|  1480     return tapElement(webView, type, element); |  1480     return tapElement(webView, type, element); | 
|  1481 } |  1481 } | 
|  1482  |  1482  | 
|  1483 TEST_F(WebViewTest, DetectContentAroundPosition) |  1483 TEST_F(WebViewTest, DetectContentAroundPosition) | 
|  1484 { |  1484 { | 
|  1485     URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c
      _str()), WebString::fromUTF8("content_listeners.html")); |  1485     URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c
      _str()), WebString::fromUTF8("content_listeners.html")); | 
|  1486  |  1486  | 
|  1487     ContentDetectorClient client; |  1487     ContentDetectorClient client; | 
|  1488     WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "content_li
      steners.html", true, 0, &client); |  1488     WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "content_li
      steners.html", true, 0, &client); | 
|  1489     webView->resize(WebSize(500, 300)); |  1489     webView->resize(WebSize(500, 300)); | 
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1541     WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "content_li
      steners_iframe.html", true, 0, &client); |  1541     WebView* webView = m_webViewHelper.initializeAndLoad(m_baseURL + "content_li
      steners_iframe.html", true, 0, &client); | 
|  1542     webView->resize(WebSize(500, 300)); |  1542     webView->resize(WebSize(500, 300)); | 
|  1543     webView->updateAllLifecyclePhases(); |  1543     webView->updateAllLifecyclePhases(); | 
|  1544     runPendingTasks(); |  1544     runPendingTasks(); | 
|  1545  |  1545  | 
|  1546     WebString noListener = WebString::fromUTF8("noListener"); |  1546     WebString noListener = WebString::fromUTF8("noListener"); | 
|  1547     WebString frameName = WebString::fromUTF8("innerFrame"); |  1547     WebString frameName = WebString::fromUTF8("innerFrame"); | 
|  1548  |  1548  | 
|  1549     WebURL intentURL = toKURL(m_baseURL); |  1549     WebURL intentURL = toKURL(m_baseURL); | 
|  1550     client.setContentDetectionResult(WebContentDetectionResult(WebRange(), WebSt
      ring(), intentURL)); |  1550     client.setContentDetectionResult(WebContentDetectionResult(WebRange(), WebSt
      ring(), intentURL)); | 
|  1551     RefPtrWillBeRawPtr<Element> element = static_cast<PassRefPtrWillBeRawPtr<Ele
      ment>>(webView->findFrameByName(frameName)->document().getElementById(noListener
      )); |  1551     RawPtr<Element> element = static_cast<RawPtr<Element>>(webView->findFrameByN
      ame(frameName)->document().getElementById(noListener)); | 
|  1552     EXPECT_TRUE(tapElement(webView, WebInputEvent::GestureTap, element)); |  1552     EXPECT_TRUE(tapElement(webView, WebInputEvent::GestureTap, element)); | 
|  1553     EXPECT_TRUE(client.scheduledIntentURL() == intentURL); |  1553     EXPECT_TRUE(client.scheduledIntentURL() == intentURL); | 
|  1554     EXPECT_FALSE(client.wasInMainFrame()); |  1554     EXPECT_FALSE(client.wasInMainFrame()); | 
|  1555  |  1555  | 
|  1556     m_webViewHelper.reset(); // Explicitly reset to break dependency on locally 
      scoped client. |  1556     m_webViewHelper.reset(); // Explicitly reset to break dependency on locally 
      scoped client. | 
|  1557 } |  1557 } | 
|  1558  |  1558  | 
|  1559 TEST_F(WebViewTest, ClientTapHandling) |  1559 TEST_F(WebViewTest, ClientTapHandling) | 
|  1560 { |  1560 { | 
|  1561     TapHandlingWebViewClient client; |  1561     TapHandlingWebViewClient client; | 
| (...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2425 // This test checks that deleting nodes which have only non-JS-registered touch |  2425 // This test checks that deleting nodes which have only non-JS-registered touch | 
|  2426 // handlers also removes them from the event handler registry. Note that this |  2426 // handlers also removes them from the event handler registry. Note that this | 
|  2427 // is different from detaching and re-attaching the same node, which is covered |  2427 // is different from detaching and re-attaching the same node, which is covered | 
|  2428 // by layout tests under fast/events/. |  2428 // by layout tests under fast/events/. | 
|  2429 TEST_F(WebViewTest, DeleteElementWithRegisteredHandler) |  2429 TEST_F(WebViewTest, DeleteElementWithRegisteredHandler) | 
|  2430 { |  2430 { | 
|  2431     std::string url = m_baseURL + "simple_div.html"; |  2431     std::string url = m_baseURL + "simple_div.html"; | 
|  2432     URLTestHelpers::registerMockedURLLoad(toKURL(url), "simple_div.html"); |  2432     URLTestHelpers::registerMockedURLLoad(toKURL(url), "simple_div.html"); | 
|  2433     WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); |  2433     WebViewImpl* webViewImpl = m_webViewHelper.initializeAndLoad(url, true); | 
|  2434  |  2434  | 
|  2435     RefPtrWillBePersistent<Document> document = webViewImpl->mainFrameImpl()->fr
      ame()->document(); |  2435     Persistent<Document> document = webViewImpl->mainFrameImpl()->frame()->docum
      ent(); | 
|  2436     Element* div = document->getElementById("div"); |  2436     Element* div = document->getElementById("div"); | 
|  2437     EventHandlerRegistry& registry = document->frameHost()->eventHandlerRegistry
      (); |  2437     EventHandlerRegistry& registry = document->frameHost()->eventHandlerRegistry
      (); | 
|  2438  |  2438  | 
|  2439     registry.didAddEventHandler(*div, EventHandlerRegistry::ScrollEvent); |  2439     registry.didAddEventHandler(*div, EventHandlerRegistry::ScrollEvent); | 
|  2440     EXPECT_TRUE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent)); |  2440     EXPECT_TRUE(registry.hasEventHandlers(EventHandlerRegistry::ScrollEvent)); | 
|  2441  |  2441  | 
|  2442     TrackExceptionState exceptionState; |  2442     TrackExceptionState exceptionState; | 
|  2443     div->remove(exceptionState); |  2443     div->remove(exceptionState); | 
|  2444 #if ENABLE(OILPAN) |  2444 #if ENABLE(OILPAN) | 
|  2445     // For oilpan we have to force a GC to ensure the event handlers have been r
      emoved when |  2445     // For oilpan we have to force a GC to ensure the event handlers have been r
      emoved when | 
| (...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3227     result = WebSubstringUtil::attributedSubstringInRange(frame, 5, 5, &baseline
      Point); |  3227     result = WebSubstringUtil::attributedSubstringInRange(frame, 5, 5, &baseline
      Point); | 
|  3228     ASSERT_TRUE(!!result); |  3228     ASSERT_TRUE(!!result); | 
|  3229  |  3229  | 
|  3230     point = WebPoint(baselinePoint.x, frameView->height() - baselinePoint.y); |  3230     point = WebPoint(baselinePoint.x, frameView->height() - baselinePoint.y); | 
|  3231     result = WebSubstringUtil::attributedWordAtPoint(webView, point, baselinePoi
      nt); |  3231     result = WebSubstringUtil::attributedWordAtPoint(webView, point, baselinePoi
      nt); | 
|  3232     ASSERT_TRUE(!!result); |  3232     ASSERT_TRUE(!!result); | 
|  3233 } |  3233 } | 
|  3234 #endif |  3234 #endif | 
|  3235  |  3235  | 
|  3236 } // namespace blink |  3236 } // namespace blink | 
| OLD | NEW |