| 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 1323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1334 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().height); | 1334 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().height); |
| 1335 | 1335 |
| 1336 // Set up a composition from existing text that needs to be committed. | 1336 // Set up a composition from existing text that needs to be committed. |
| 1337 Vector<CompositionUnderline> empty_underlines; | 1337 Vector<CompositionUnderline> empty_underlines; |
| 1338 WebLocalFrameBase* frame = web_view->MainFrameImpl(); | 1338 WebLocalFrameBase* frame = web_view->MainFrameImpl(); |
| 1339 frame->GetFrame()->GetInputMethodController().SetCompositionFromExistingText( | 1339 frame->GetFrame()->GetInputMethodController().SetCompositionFromExistingText( |
| 1340 empty_underlines, 0, 3); | 1340 empty_underlines, 0, 3); |
| 1341 | 1341 |
| 1342 // Scroll the input field out of the viewport. | 1342 // Scroll the input field out of the viewport. |
| 1343 Element* element = static_cast<Element*>( | 1343 Element* element = static_cast<Element*>( |
| 1344 web_view->MainFrame()->GetDocument().GetElementById("btn")); | 1344 web_view->MainFrameImpl()->GetDocument().GetElementById("btn")); |
| 1345 element->scrollIntoView(); | 1345 element->scrollIntoView(); |
| 1346 float offset_height = web_view->MainFrame()->GetScrollOffset().height; | 1346 float offset_height = web_view->MainFrame()->GetScrollOffset().height; |
| 1347 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().width); | 1347 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().width); |
| 1348 EXPECT_LT(0, offset_height); | 1348 EXPECT_LT(0, offset_height); |
| 1349 | 1349 |
| 1350 WebTextInputInfo info = frame->GetInputMethodController()->TextInputInfo(); | 1350 WebTextInputInfo info = frame->GetInputMethodController()->TextInputInfo(); |
| 1351 EXPECT_EQ("hello", std::string(info.value.Utf8().data())); | 1351 EXPECT_EQ("hello", std::string(info.value.Utf8().data())); |
| 1352 | 1352 |
| 1353 // Verify that the input field is not scrolled back into the viewport. | 1353 // Verify that the input field is not scrolled back into the viewport. |
| 1354 frame->FrameWidget() | 1354 frame->FrameWidget() |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1534 | 1534 |
| 1535 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) { | 1535 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) { |
| 1536 RegisterMockedHttpURLLoad("content_editable_rich_text.html"); | 1536 RegisterMockedHttpURLLoad("content_editable_rich_text.html"); |
| 1537 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( | 1537 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1538 base_url_ + "content_editable_rich_text.html"); | 1538 base_url_ + "content_editable_rich_text.html"); |
| 1539 web_view->SetInitialFocus(false); | 1539 web_view->SetInitialFocus(false); |
| 1540 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); | 1540 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); |
| 1541 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); | 1541 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); |
| 1542 WebLocalFrameBase* frame = web_view->MainFrameImpl(); | 1542 WebLocalFrameBase* frame = web_view->MainFrameImpl(); |
| 1543 frame->SetEditableSelectionOffsets(1, 1); | 1543 frame->SetEditableSelectionOffsets(1, 1); |
| 1544 WebDocument document = web_view->MainFrame()->GetDocument(); | 1544 WebDocument document = web_view->MainFrameImpl()->GetDocument(); |
| 1545 EXPECT_FALSE(document.GetElementById("bold").IsNull()); | 1545 EXPECT_FALSE(document.GetElementById("bold").IsNull()); |
| 1546 frame->SetCompositionFromExistingText(0, 4, underlines); | 1546 frame->SetCompositionFromExistingText(0, 4, underlines); |
| 1547 EXPECT_FALSE(document.GetElementById("bold").IsNull()); | 1547 EXPECT_FALSE(document.GetElementById("bold").IsNull()); |
| 1548 } | 1548 } |
| 1549 | 1549 |
| 1550 TEST_P(WebViewTest, SetEditableSelectionOffsetsKeepsComposition) { | 1550 TEST_P(WebViewTest, SetEditableSelectionOffsetsKeepsComposition) { |
| 1551 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1551 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1552 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( | 1552 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1553 base_url_ + "input_field_populated.html"); | 1553 base_url_ + "input_field_populated.html"); |
| 1554 web_view->SetInitialFocus(false); | 1554 web_view->SetInitialFocus(false); |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1955 const std::string foo_url = base_url_ + "foo.html"; | 1955 const std::string foo_url = base_url_ + "foo.html"; |
| 1956 const std::string bar_url = base_url_ + "bar.html"; | 1956 const std::string bar_url = base_url_ + "bar.html"; |
| 1957 | 1957 |
| 1958 WebViewBase* web_view = web_view_helper_.InitializeAndLoad(foo_url); | 1958 WebViewBase* web_view = web_view_helper_.InitializeAndLoad(foo_url); |
| 1959 | 1959 |
| 1960 ASSERT_TRUE(web_view); | 1960 ASSERT_TRUE(web_view); |
| 1961 | 1961 |
| 1962 // Drag and drop barUrl and verify that we've navigated to it. | 1962 // Drag and drop barUrl and verify that we've navigated to it. |
| 1963 DragAndDropURL(web_view, bar_url); | 1963 DragAndDropURL(web_view, bar_url); |
| 1964 EXPECT_EQ(bar_url, | 1964 EXPECT_EQ(bar_url, |
| 1965 web_view->MainFrame()->GetDocument().Url().GetString().Utf8()); | 1965 web_view->MainFrameImpl()->GetDocument().Url().GetString().Utf8()); |
| 1966 | 1966 |
| 1967 // Drag and drop fooUrl and verify that we've navigated back to it. | 1967 // Drag and drop fooUrl and verify that we've navigated back to it. |
| 1968 DragAndDropURL(web_view, foo_url); | 1968 DragAndDropURL(web_view, foo_url); |
| 1969 EXPECT_EQ(foo_url, | 1969 EXPECT_EQ(foo_url, |
| 1970 web_view->MainFrame()->GetDocument().Url().GetString().Utf8()); | 1970 web_view->MainFrameImpl()->GetDocument().Url().GetString().Utf8()); |
| 1971 | 1971 |
| 1972 // Disable navigation on drag-and-drop. | 1972 // Disable navigation on drag-and-drop. |
| 1973 web_view->SettingsImpl()->SetNavigateOnDragDrop(false); | 1973 web_view->SettingsImpl()->SetNavigateOnDragDrop(false); |
| 1974 | 1974 |
| 1975 // Attempt to drag and drop to barUrl and verify that no navigation has | 1975 // Attempt to drag and drop to barUrl and verify that no navigation has |
| 1976 // occurred. | 1976 // occurred. |
| 1977 DragAndDropURL(web_view, bar_url); | 1977 DragAndDropURL(web_view, bar_url); |
| 1978 EXPECT_EQ(foo_url, | 1978 EXPECT_EQ(foo_url, |
| 1979 web_view->MainFrame()->GetDocument().Url().GetString().Utf8()); | 1979 web_view->MainFrameImpl()->GetDocument().Url().GetString().Utf8()); |
| 1980 } | 1980 } |
| 1981 | 1981 |
| 1982 bool WebViewTest::TapElement(WebInputEvent::Type type, Element* element) { | 1982 bool WebViewTest::TapElement(WebInputEvent::Type type, Element* element) { |
| 1983 if (!element || !element->GetLayoutObject()) | 1983 if (!element || !element->GetLayoutObject()) |
| 1984 return false; | 1984 return false; |
| 1985 | 1985 |
| 1986 DCHECK(web_view_helper_.WebView()); | 1986 DCHECK(web_view_helper_.WebView()); |
| 1987 element->scrollIntoViewIfNeeded(); | 1987 element->scrollIntoViewIfNeeded(); |
| 1988 | 1988 |
| 1989 // TODO(bokan): Technically incorrect, event positions should be in viewport | 1989 // TODO(bokan): Technically incorrect, event positions should be in viewport |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2005 | 2005 |
| 2006 web_view_helper_.WebView()->HandleInputEvent(WebCoalescedInputEvent(event)); | 2006 web_view_helper_.WebView()->HandleInputEvent(WebCoalescedInputEvent(event)); |
| 2007 RunPendingTasks(); | 2007 RunPendingTasks(); |
| 2008 return true; | 2008 return true; |
| 2009 } | 2009 } |
| 2010 | 2010 |
| 2011 bool WebViewTest::TapElementById(WebInputEvent::Type type, | 2011 bool WebViewTest::TapElementById(WebInputEvent::Type type, |
| 2012 const WebString& id) { | 2012 const WebString& id) { |
| 2013 DCHECK(web_view_helper_.WebView()); | 2013 DCHECK(web_view_helper_.WebView()); |
| 2014 Element* element = static_cast<Element*>( | 2014 Element* element = static_cast<Element*>( |
| 2015 web_view_helper_.WebView()->MainFrame()->GetDocument().GetElementById( | 2015 web_view_helper_.WebView()->MainFrameImpl()->GetDocument().GetElementById( |
| 2016 id)); | 2016 id)); |
| 2017 return TapElement(type, element); | 2017 return TapElement(type, element); |
| 2018 } | 2018 } |
| 2019 | 2019 |
| 2020 IntSize WebViewTest::PrintICBSizeFromPageSize(const FloatSize& page_size) { | 2020 IntSize WebViewTest::PrintICBSizeFromPageSize(const FloatSize& page_size) { |
| 2021 // The expected layout size comes from the calculation done in | 2021 // The expected layout size comes from the calculation done in |
| 2022 // ResizePageRectsKeepingRatio() which is used from PrintContext::begin() to | 2022 // ResizePageRectsKeepingRatio() which is used from PrintContext::begin() to |
| 2023 // scale the page size. | 2023 // scale the page size. |
| 2024 const float ratio = page_size.Height() / (float)page_size.Width(); | 2024 const float ratio = page_size.Height() / (float)page_size.Width(); |
| 2025 const int icb_width = | 2025 const int icb_width = |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2136 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2136 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2137 WebInputEvent::kNoModifiers, | 2137 WebInputEvent::kNoModifiers, |
| 2138 WebInputEvent::kTimeStampForTesting); | 2138 WebInputEvent::kTimeStampForTesting); |
| 2139 event.source_device = kWebGestureDeviceTouchscreen; | 2139 event.source_device = kWebGestureDeviceTouchscreen; |
| 2140 event.x = 10; | 2140 event.x = 10; |
| 2141 event.y = 10; | 2141 event.y = 10; |
| 2142 | 2142 |
| 2143 EXPECT_NE(WebInputEventResult::kHandledSystem, | 2143 EXPECT_NE(WebInputEventResult::kHandledSystem, |
| 2144 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2144 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2145 | 2145 |
| 2146 HTMLElement* element = | 2146 HTMLElement* element = ToHTMLElement( |
| 2147 ToHTMLElement(web_view->MainFrame()->GetDocument().GetElementById("obj")); | 2147 web_view->MainFrameImpl()->GetDocument().GetElementById("obj")); |
| 2148 EXPECT_FALSE(element->CanStartSelection()); | 2148 EXPECT_FALSE(element->CanStartSelection()); |
| 2149 } | 2149 } |
| 2150 | 2150 |
| 2151 TEST_P(WebViewTest, LongPressObjectFallback) { | 2151 TEST_P(WebViewTest, LongPressObjectFallback) { |
| 2152 RegisterMockedHttpURLLoad("long_press_object_fallback.html"); | 2152 RegisterMockedHttpURLLoad("long_press_object_fallback.html"); |
| 2153 | 2153 |
| 2154 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( | 2154 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2155 base_url_ + "long_press_object_fallback.html", true); | 2155 base_url_ + "long_press_object_fallback.html", true); |
| 2156 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); | 2156 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); |
| 2157 web_view->Resize(WebSize(500, 300)); | 2157 web_view->Resize(WebSize(500, 300)); |
| 2158 web_view->UpdateAllLifecyclePhases(); | 2158 web_view->UpdateAllLifecyclePhases(); |
| 2159 RunPendingTasks(); | 2159 RunPendingTasks(); |
| 2160 | 2160 |
| 2161 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2161 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2162 WebInputEvent::kNoModifiers, | 2162 WebInputEvent::kNoModifiers, |
| 2163 WebInputEvent::kTimeStampForTesting); | 2163 WebInputEvent::kTimeStampForTesting); |
| 2164 event.source_device = kWebGestureDeviceTouchscreen; | 2164 event.source_device = kWebGestureDeviceTouchscreen; |
| 2165 event.x = 10; | 2165 event.x = 10; |
| 2166 event.y = 10; | 2166 event.y = 10; |
| 2167 | 2167 |
| 2168 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2168 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2169 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2169 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2170 | 2170 |
| 2171 HTMLElement* element = | 2171 HTMLElement* element = ToHTMLElement( |
| 2172 ToHTMLElement(web_view->MainFrame()->GetDocument().GetElementById("obj")); | 2172 web_view->MainFrameImpl()->GetDocument().GetElementById("obj")); |
| 2173 EXPECT_TRUE(element->CanStartSelection()); | 2173 EXPECT_TRUE(element->CanStartSelection()); |
| 2174 } | 2174 } |
| 2175 | 2175 |
| 2176 TEST_P(WebViewTest, LongPressImage) { | 2176 TEST_P(WebViewTest, LongPressImage) { |
| 2177 RegisterMockedHttpURLLoad("long_press_image.html"); | 2177 RegisterMockedHttpURLLoad("long_press_image.html"); |
| 2178 | 2178 |
| 2179 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( | 2179 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2180 base_url_ + "long_press_image.html", true); | 2180 base_url_ + "long_press_image.html", true); |
| 2181 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); | 2181 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); |
| 2182 web_view->Resize(WebSize(500, 300)); | 2182 web_view->Resize(WebSize(500, 300)); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2248 web_view->SettingsImpl()->SetTouchDragDropEnabled(true); | 2248 web_view->SettingsImpl()->SetTouchDragDropEnabled(true); |
| 2249 web_view->Resize(WebSize(500, 300)); | 2249 web_view->Resize(WebSize(500, 300)); |
| 2250 web_view->UpdateAllLifecyclePhases(); | 2250 web_view->UpdateAllLifecyclePhases(); |
| 2251 RunPendingTasks(); | 2251 RunPendingTasks(); |
| 2252 | 2252 |
| 2253 WebString anchor_tag_id = WebString::FromUTF8("anchorTag"); | 2253 WebString anchor_tag_id = WebString::FromUTF8("anchorTag"); |
| 2254 WebString image_tag_id = WebString::FromUTF8("imageTag"); | 2254 WebString image_tag_id = WebString::FromUTF8("imageTag"); |
| 2255 | 2255 |
| 2256 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, anchor_tag_id)); | 2256 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, anchor_tag_id)); |
| 2257 EXPECT_STREQ("anchor contextmenu", | 2257 EXPECT_STREQ("anchor contextmenu", |
| 2258 web_view->MainFrame()->GetDocument().Title().Utf8().data()); | 2258 web_view->MainFrameImpl()->GetDocument().Title().Utf8().data()); |
| 2259 | 2259 |
| 2260 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, image_tag_id)); | 2260 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, image_tag_id)); |
| 2261 EXPECT_STREQ("image contextmenu", | 2261 EXPECT_STREQ("image contextmenu", |
| 2262 web_view->MainFrame()->GetDocument().Title().Utf8().data()); | 2262 web_view->MainFrameImpl()->GetDocument().Title().Utf8().data()); |
| 2263 } | 2263 } |
| 2264 | 2264 |
| 2265 TEST_P(WebViewTest, LongPressEmptyEditableSelection) { | 2265 TEST_P(WebViewTest, LongPressEmptyEditableSelection) { |
| 2266 RegisterMockedHttpURLLoad("long_press_empty_editable_selection.html"); | 2266 RegisterMockedHttpURLLoad("long_press_empty_editable_selection.html"); |
| 2267 | 2267 |
| 2268 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( | 2268 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2269 base_url_ + "long_press_empty_editable_selection.html", true); | 2269 base_url_ + "long_press_empty_editable_selection.html", true); |
| 2270 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); | 2270 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); |
| 2271 web_view->Resize(WebSize(500, 300)); | 2271 web_view->Resize(WebSize(500, 300)); |
| 2272 web_view->UpdateAllLifecyclePhases(); | 2272 web_view->UpdateAllLifecyclePhases(); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2383 WebInputEvent::kTimeStampForTesting); | 2383 WebInputEvent::kTimeStampForTesting); |
| 2384 event.source_device = kWebGestureDeviceTouchscreen; | 2384 event.source_device = kWebGestureDeviceTouchscreen; |
| 2385 event.x = 100; | 2385 event.x = 100; |
| 2386 event.y = 25; | 2386 event.y = 25; |
| 2387 event.data.tap.tap_count = 2; | 2387 event.data.tap.tap_count = 2; |
| 2388 | 2388 |
| 2389 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); | 2389 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); |
| 2390 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); | 2390 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); |
| 2391 | 2391 |
| 2392 HTMLTextAreaElement* text_area_element = toHTMLTextAreaElement( | 2392 HTMLTextAreaElement* text_area_element = toHTMLTextAreaElement( |
| 2393 web_view->MainFrame()->GetDocument().GetElementById(blanklinestextbox)); | 2393 web_view->MainFrameImpl()->GetDocument().GetElementById( |
| 2394 blanklinestextbox)); |
| 2394 text_area_element->setValue("hello"); | 2395 text_area_element->setValue("hello"); |
| 2395 | 2396 |
| 2396 // Long-press past last word of textbox. | 2397 // Long-press past last word of textbox. |
| 2397 EXPECT_TRUE( | 2398 EXPECT_TRUE( |
| 2398 TapElementById(WebInputEvent::kGestureLongPress, blanklinestextbox)); | 2399 TapElementById(WebInputEvent::kGestureLongPress, blanklinestextbox)); |
| 2399 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); | 2400 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); |
| 2400 | 2401 |
| 2401 // Double-tap past last word of textbox. | 2402 // Double-tap past last word of textbox. |
| 2402 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); | 2403 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); |
| 2403 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); | 2404 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2742 | 2743 |
| 2743 TEST_P(WebViewTest, FinishComposingTextDoesntTriggerAutofillTextChange) { | 2744 TEST_P(WebViewTest, FinishComposingTextDoesntTriggerAutofillTextChange) { |
| 2744 RegisterMockedHttpURLLoad("input_field_populated.html"); | 2745 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 2745 MockAutofillClient client; | 2746 MockAutofillClient client; |
| 2746 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( | 2747 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2747 base_url_ + "input_field_populated.html"); | 2748 base_url_ + "input_field_populated.html"); |
| 2748 WebLocalFrameBase* frame = web_view->MainFrameImpl(); | 2749 WebLocalFrameBase* frame = web_view->MainFrameImpl(); |
| 2749 frame->SetAutofillClient(&client); | 2750 frame->SetAutofillClient(&client); |
| 2750 web_view->SetInitialFocus(false); | 2751 web_view->SetInitialFocus(false); |
| 2751 | 2752 |
| 2752 WebDocument document = web_view->MainFrame()->GetDocument(); | 2753 WebDocument document = web_view->MainFrameImpl()->GetDocument(); |
| 2753 HTMLFormControlElement* form = | 2754 HTMLFormControlElement* form = |
| 2754 ToHTMLFormControlElement(document.GetElementById("sample")); | 2755 ToHTMLFormControlElement(document.GetElementById("sample")); |
| 2755 | 2756 |
| 2756 WebInputMethodController* active_input_method_controller = | 2757 WebInputMethodController* active_input_method_controller = |
| 2757 frame->FrameWidget()->GetActiveWebInputMethodController(); | 2758 frame->FrameWidget()->GetActiveWebInputMethodController(); |
| 2758 // Set up a composition that needs to be committed. | 2759 // Set up a composition that needs to be committed. |
| 2759 std::string composition_text("testingtext"); | 2760 std::string composition_text("testingtext"); |
| 2760 | 2761 |
| 2761 WebVector<WebCompositionUnderline> empty_underlines; | 2762 WebVector<WebCompositionUnderline> empty_underlines; |
| 2762 active_input_method_controller->SetComposition( | 2763 active_input_method_controller->SetComposition( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2797 frame->SetCompositionFromExistingText(8, 12, empty_underlines); | 2798 frame->SetCompositionFromExistingText(8, 12, empty_underlines); |
| 2798 | 2799 |
| 2799 WebTextInputInfo info = frame->GetInputMethodController()->TextInputInfo(); | 2800 WebTextInputInfo info = frame->GetInputMethodController()->TextInputInfo(); |
| 2800 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", | 2801 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", |
| 2801 std::string(info.value.Utf8().data())); | 2802 std::string(info.value.Utf8().data())); |
| 2802 EXPECT_EQ(8, info.composition_start); | 2803 EXPECT_EQ(8, info.composition_start); |
| 2803 EXPECT_EQ(12, info.composition_end); | 2804 EXPECT_EQ(12, info.composition_end); |
| 2804 | 2805 |
| 2805 EXPECT_EQ(0, client.TextChanges()); | 2806 EXPECT_EQ(0, client.TextChanges()); |
| 2806 | 2807 |
| 2807 WebDocument document = web_view->MainFrame()->GetDocument(); | 2808 WebDocument document = web_view->MainFrameImpl()->GetDocument(); |
| 2808 EXPECT_EQ(WebString::FromUTF8("none"), | 2809 EXPECT_EQ(WebString::FromUTF8("none"), |
| 2809 document.GetElementById("inputEvent").FirstChild().NodeValue()); | 2810 document.GetElementById("inputEvent").FirstChild().NodeValue()); |
| 2810 | 2811 |
| 2811 frame->SetAutofillClient(0); | 2812 frame->SetAutofillClient(0); |
| 2812 } | 2813 } |
| 2813 | 2814 |
| 2814 class ViewCreatingWebViewClient : public FrameTestHelpers::TestWebViewClient { | 2815 class ViewCreatingWebViewClient : public FrameTestHelpers::TestWebViewClient { |
| 2815 public: | 2816 public: |
| 2816 ViewCreatingWebViewClient() : did_focus_called_(false) {} | 2817 ViewCreatingWebViewClient() : did_focus_called_(false) {} |
| 2817 | 2818 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2884 ->MainFrame()) | 2885 ->MainFrame()) |
| 2885 ->Loader() | 2886 ->Loader() |
| 2886 .Load(request_with_target_start); | 2887 .Load(request_with_target_start); |
| 2887 EXPECT_TRUE(client.DidFocusCalled()); | 2888 EXPECT_TRUE(client.DidFocusCalled()); |
| 2888 | 2889 |
| 2889 web_view_helper.Reset(); // Remove dependency on locally scoped client. | 2890 web_view_helper.Reset(); // Remove dependency on locally scoped client. |
| 2890 } | 2891 } |
| 2891 | 2892 |
| 2892 TEST_P(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus) { | 2893 TEST_P(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus) { |
| 2893 RegisterMockedHttpURLLoad("focusout_focusin_events.html"); | 2894 RegisterMockedHttpURLLoad("focusout_focusin_events.html"); |
| 2894 WebView* web_view = web_view_helper_.InitializeAndLoad( | 2895 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2895 base_url_ + "focusout_focusin_events.html", true, 0); | 2896 base_url_ + "focusout_focusin_events.html", true, 0); |
| 2896 | 2897 |
| 2897 web_view->SetFocus(true); | 2898 web_view->SetFocus(true); |
| 2898 web_view->SetFocus(false); | 2899 web_view->SetFocus(false); |
| 2899 web_view->SetFocus(true); | 2900 web_view->SetFocus(true); |
| 2900 | 2901 |
| 2901 WebElement element = | 2902 WebElement element = |
| 2902 web_view->MainFrame()->GetDocument().GetElementById("message"); | 2903 web_view->MainFrameImpl()->GetDocument().GetElementById("message"); |
| 2903 EXPECT_STREQ("focusoutfocusin", element.TextContent().Utf8().data()); | 2904 EXPECT_STREQ("focusoutfocusin", element.TextContent().Utf8().data()); |
| 2904 } | 2905 } |
| 2905 | 2906 |
| 2906 TEST_P(WebViewTest, DispatchesDomFocusOutDomFocusInOnViewToggleFocus) { | 2907 TEST_P(WebViewTest, DispatchesDomFocusOutDomFocusInOnViewToggleFocus) { |
| 2907 RegisterMockedHttpURLLoad("domfocusout_domfocusin_events.html"); | 2908 RegisterMockedHttpURLLoad("domfocusout_domfocusin_events.html"); |
| 2908 WebView* web_view = web_view_helper_.InitializeAndLoad( | 2909 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2909 base_url_ + "domfocusout_domfocusin_events.html", true, 0); | 2910 base_url_ + "domfocusout_domfocusin_events.html", true, 0); |
| 2910 | 2911 |
| 2911 web_view->SetFocus(true); | 2912 web_view->SetFocus(true); |
| 2912 web_view->SetFocus(false); | 2913 web_view->SetFocus(false); |
| 2913 web_view->SetFocus(true); | 2914 web_view->SetFocus(true); |
| 2914 | 2915 |
| 2915 WebElement element = | 2916 WebElement element = |
| 2916 web_view->MainFrame()->GetDocument().GetElementById("message"); | 2917 web_view->MainFrameImpl()->GetDocument().GetElementById("message"); |
| 2917 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.TextContent().Utf8().data()); | 2918 EXPECT_STREQ("DOMFocusOutDOMFocusIn", element.TextContent().Utf8().data()); |
| 2918 } | 2919 } |
| 2919 | 2920 |
| 2920 static void OpenDateTimeChooser(WebView* web_view, | 2921 static void OpenDateTimeChooser(WebView* web_view, |
| 2921 HTMLInputElement* input_element) { | 2922 HTMLInputElement* input_element) { |
| 2922 input_element->focus(); | 2923 input_element->focus(); |
| 2923 | 2924 |
| 2924 WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown, | 2925 WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown, |
| 2925 WebInputEvent::kNoModifiers, | 2926 WebInputEvent::kNoModifiers, |
| 2926 WebInputEvent::kTimeStampForTesting); | 2927 WebInputEvent::kTimeStampForTesting); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3013 | 3014 |
| 3014 // Clear the WebViewClient from the webViewHelper to avoid use-after-free in | 3015 // Clear the WebViewClient from the webViewHelper to avoid use-after-free in |
| 3015 // the WebViewHelper destructor. | 3016 // the WebViewHelper destructor. |
| 3016 web_view_helper_.Reset(); | 3017 web_view_helper_.Reset(); |
| 3017 RuntimeEnabledFeatures::SetInputMultipleFieldsUIEnabled( | 3018 RuntimeEnabledFeatures::SetInputMultipleFieldsUIEnabled( |
| 3018 original_multiple_fields_flag); | 3019 original_multiple_fields_flag); |
| 3019 } | 3020 } |
| 3020 | 3021 |
| 3021 TEST_P(WebViewTest, DispatchesFocusBlurOnViewToggle) { | 3022 TEST_P(WebViewTest, DispatchesFocusBlurOnViewToggle) { |
| 3022 RegisterMockedHttpURLLoad("focus_blur_events.html"); | 3023 RegisterMockedHttpURLLoad("focus_blur_events.html"); |
| 3023 WebView* web_view = web_view_helper_.InitializeAndLoad( | 3024 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3024 base_url_ + "focus_blur_events.html", true, 0); | 3025 base_url_ + "focus_blur_events.html", true, 0); |
| 3025 | 3026 |
| 3026 web_view->SetFocus(true); | 3027 web_view->SetFocus(true); |
| 3027 web_view->SetFocus(false); | 3028 web_view->SetFocus(false); |
| 3028 web_view->SetFocus(true); | 3029 web_view->SetFocus(true); |
| 3029 | 3030 |
| 3030 WebElement element = | 3031 WebElement element = |
| 3031 web_view->MainFrame()->GetDocument().GetElementById("message"); | 3032 web_view->MainFrameImpl()->GetDocument().GetElementById("message"); |
| 3032 // Expect not to see duplication of events. | 3033 // Expect not to see duplication of events. |
| 3033 EXPECT_STREQ("blurfocus", element.TextContent().Utf8().data()); | 3034 EXPECT_STREQ("blurfocus", element.TextContent().Utf8().data()); |
| 3034 } | 3035 } |
| 3035 | 3036 |
| 3036 TEST_P(WebViewTest, SmartClipData) { | 3037 TEST_P(WebViewTest, SmartClipData) { |
| 3037 static const char kExpectedClipText[] = "\nPrice 10,000,000won"; | 3038 static const char kExpectedClipText[] = "\nPrice 10,000,000won"; |
| 3038 static const char kExpectedClipHtml[] = | 3039 static const char kExpectedClipHtml[] = |
| 3039 "<div id=\"div4\" style=\"padding: 10px; margin: 10px; border: 2px " | 3040 "<div id=\"div4\" style=\"padding: 10px; margin: 10px; border: 2px " |
| 3040 "solid skyblue; float: left; width: 190px; height: 30px; " | 3041 "solid skyblue; float: left; width: 190px; height: 30px; " |
| 3041 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " | 3042 "color: rgb(0, 0, 0); font-family: myahem; font-size: 8px; font-style: " |
| (...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3607 web_view->SetZoomLevel(WebView::ZoomFactorToZoomLevel(1)); | 3608 web_view->SetZoomLevel(WebView::ZoomFactorToZoomLevel(1)); |
| 3608 size = web_view->ContentsPreferredMinimumSize(); | 3609 size = web_view->ContentsPreferredMinimumSize(); |
| 3609 EXPECT_EQ(2, size.width); | 3610 EXPECT_EQ(2, size.width); |
| 3610 EXPECT_EQ(2, size.height); | 3611 EXPECT_EQ(2, size.height); |
| 3611 } | 3612 } |
| 3612 | 3613 |
| 3613 TEST_P(WebViewTest, PreferredSizeDirtyLayout) { | 3614 TEST_P(WebViewTest, PreferredSizeDirtyLayout) { |
| 3614 std::string url = base_url_ + "specify_size.html?100px:100px"; | 3615 std::string url = base_url_ + "specify_size.html?100px:100px"; |
| 3615 URLTestHelpers::RegisterMockedURLLoad( | 3616 URLTestHelpers::RegisterMockedURLLoad( |
| 3616 ToKURL(url), testing::WebTestDataPath("specify_size.html")); | 3617 ToKURL(url), testing::WebTestDataPath("specify_size.html")); |
| 3617 WebView* web_view = web_view_helper_.InitializeAndLoad(url, true); | 3618 WebViewBase* web_view = web_view_helper_.InitializeAndLoad(url, true); |
| 3618 WebElement document_element = | 3619 WebElement document_element = |
| 3619 web_view->MainFrame()->GetDocument().DocumentElement(); | 3620 web_view->MainFrameImpl()->GetDocument().DocumentElement(); |
| 3620 | 3621 |
| 3621 WebSize size = web_view->ContentsPreferredMinimumSize(); | 3622 WebSize size = web_view->ContentsPreferredMinimumSize(); |
| 3622 EXPECT_EQ(100, size.width); | 3623 EXPECT_EQ(100, size.width); |
| 3623 EXPECT_EQ(100, size.height); | 3624 EXPECT_EQ(100, size.height); |
| 3624 | 3625 |
| 3625 document_element.SetAttribute("style", "display: none"); | 3626 document_element.SetAttribute("style", "display: none"); |
| 3626 | 3627 |
| 3627 size = web_view->ContentsPreferredMinimumSize(); | 3628 size = web_view->ContentsPreferredMinimumSize(); |
| 3628 EXPECT_EQ(0, size.width); | 3629 EXPECT_EQ(0, size.width); |
| 3629 EXPECT_EQ(0, size.height); | 3630 EXPECT_EQ(0, size.height); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 3657 IntPoint tapped_position_; | 3658 IntPoint tapped_position_; |
| 3658 WebNode tapped_node_; | 3659 WebNode tapped_node_; |
| 3659 bool page_changed_ = false; | 3660 bool page_changed_ = false; |
| 3660 }; | 3661 }; |
| 3661 | 3662 |
| 3662 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeeded) { | 3663 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeeded) { |
| 3663 std::string test_file = "show_unhandled_tap.html"; | 3664 std::string test_file = "show_unhandled_tap.html"; |
| 3664 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3665 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3665 RegisterMockedHttpURLLoad(test_file); | 3666 RegisterMockedHttpURLLoad(test_file); |
| 3666 UnhandledTapWebViewClient client; | 3667 UnhandledTapWebViewClient client; |
| 3667 WebView* web_view = web_view_helper_.InitializeAndLoad(base_url_ + test_file, | 3668 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3668 true, 0, &client); | 3669 base_url_ + test_file, true, 0, &client); |
| 3669 web_view->Resize(WebSize(500, 300)); | 3670 web_view->Resize(WebSize(500, 300)); |
| 3670 web_view->UpdateAllLifecyclePhases(); | 3671 web_view->UpdateAllLifecyclePhases(); |
| 3671 RunPendingTasks(); | 3672 RunPendingTasks(); |
| 3672 | 3673 |
| 3673 // Scroll the bottom into view so we can distinguish window coordinates from | 3674 // Scroll the bottom into view so we can distinguish window coordinates from |
| 3674 // document coordinates. | 3675 // document coordinates. |
| 3675 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, | 3676 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, |
| 3676 WebString::FromUTF8("bottom"))); | 3677 WebString::FromUTF8("bottom"))); |
| 3677 EXPECT_TRUE(client.GetWasCalled()); | 3678 EXPECT_TRUE(client.GetWasCalled()); |
| 3678 EXPECT_EQ(64, client.GetTappedXPos()); | 3679 EXPECT_EQ(64, client.GetTappedXPos()); |
| 3679 EXPECT_EQ(278, client.GetTappedYPos()); | 3680 EXPECT_EQ(278, client.GetTappedYPos()); |
| 3680 EXPECT_FALSE(client.IsTappedNodeNull()); | 3681 EXPECT_FALSE(client.IsTappedNodeNull()); |
| 3681 EXPECT_TRUE(client.GetWebNode().IsTextNode()); | 3682 EXPECT_TRUE(client.GetWebNode().IsTextNode()); |
| 3682 | 3683 |
| 3683 // Test basic tap handling and notification. | 3684 // Test basic tap handling and notification. |
| 3684 client.Reset(); | 3685 client.Reset(); |
| 3685 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, | 3686 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, |
| 3686 WebString::FromUTF8("target"))); | 3687 WebString::FromUTF8("target"))); |
| 3687 EXPECT_TRUE(client.GetWasCalled()); | 3688 EXPECT_TRUE(client.GetWasCalled()); |
| 3688 EXPECT_EQ(144, client.GetTappedXPos()); | 3689 EXPECT_EQ(144, client.GetTappedXPos()); |
| 3689 EXPECT_EQ(82, client.GetTappedYPos()); | 3690 EXPECT_EQ(82, client.GetTappedYPos()); |
| 3690 EXPECT_FALSE(client.IsTappedNodeNull()); | 3691 EXPECT_FALSE(client.IsTappedNodeNull()); |
| 3691 EXPECT_TRUE(client.GetWebNode().IsTextNode()); | 3692 EXPECT_TRUE(client.GetWebNode().IsTextNode()); |
| 3692 // Make sure the returned text node has the parent element that was our | 3693 // Make sure the returned text node has the parent element that was our |
| 3693 // target. | 3694 // target. |
| 3694 EXPECT_EQ(web_view->MainFrame()->GetDocument().GetElementById("target"), | 3695 EXPECT_EQ(web_view->MainFrameImpl()->GetDocument().GetElementById("target"), |
| 3695 client.GetWebNode().ParentNode()); | 3696 client.GetWebNode().ParentNode()); |
| 3696 | 3697 |
| 3697 // Test correct conversion of coordinates to viewport space under pinch-zoom. | 3698 // Test correct conversion of coordinates to viewport space under pinch-zoom. |
| 3698 web_view->SetPageScaleFactor(2); | 3699 web_view->SetPageScaleFactor(2); |
| 3699 web_view->SetVisualViewportOffset(WebFloatPoint(50, 20)); | 3700 web_view->SetVisualViewportOffset(WebFloatPoint(50, 20)); |
| 3700 client.Reset(); | 3701 client.Reset(); |
| 3701 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, | 3702 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, |
| 3702 WebString::FromUTF8("target"))); | 3703 WebString::FromUTF8("target"))); |
| 3703 EXPECT_TRUE(client.GetWasCalled()); | 3704 EXPECT_TRUE(client.GetWasCalled()); |
| 3704 EXPECT_EQ(188, client.GetTappedXPos()); | 3705 EXPECT_EQ(188, client.GetTappedXPos()); |
| (...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4346 EXPECT_FALSE(frame_view->VisualViewportSuppliesScrollbars()); | 4347 EXPECT_FALSE(frame_view->VisualViewportSuppliesScrollbars()); |
| 4347 if (RuntimeEnabledFeatures::RootLayerScrollingEnabled()) { | 4348 if (RuntimeEnabledFeatures::RootLayerScrollingEnabled()) { |
| 4348 EXPECT_NE(nullptr, | 4349 EXPECT_NE(nullptr, |
| 4349 frame_view->LayoutViewportScrollableArea()->VerticalScrollbar()); | 4350 frame_view->LayoutViewportScrollableArea()->VerticalScrollbar()); |
| 4350 } else { | 4351 } else { |
| 4351 EXPECT_NE(nullptr, frame_view->VerticalScrollbar()); | 4352 EXPECT_NE(nullptr, frame_view->VerticalScrollbar()); |
| 4352 } | 4353 } |
| 4353 } | 4354 } |
| 4354 | 4355 |
| 4355 } // namespace blink | 4356 } // namespace blink |
| OLD | NEW |