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