| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h" |
| 6 | 6 |
| 7 #include <Cocoa/Cocoa.h> | 7 #include <Cocoa/Cocoa.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <tuple> | 10 #include <tuple> |
| (...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 553 TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharacterRangeCaretCase) { | 553 TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharacterRangeCaretCase) { |
| 554 const base::string16 kDummyString = base::UTF8ToUTF16("hogehoge"); | 554 const base::string16 kDummyString = base::UTF8ToUTF16("hogehoge"); |
| 555 const size_t kDummyOffset = 0; | 555 const size_t kDummyOffset = 0; |
| 556 | 556 |
| 557 gfx::Rect caret_rect(10, 11, 0, 10); | 557 gfx::Rect caret_rect(10, 11, 0, 10); |
| 558 gfx::Range caret_range(0, 0); | 558 gfx::Range caret_range(0, 0); |
| 559 ViewHostMsg_SelectionBounds_Params params; | 559 ViewHostMsg_SelectionBounds_Params params; |
| 560 | 560 |
| 561 NSRect rect; | 561 NSRect rect; |
| 562 NSRange actual_range; | 562 NSRange actual_range; |
| 563 rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); | 563 rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range, true); |
| 564 params.anchor_rect = params.focus_rect = caret_rect; | 564 params.anchor_rect = params.focus_rect = caret_rect; |
| 565 params.anchor_dir = params.focus_dir = blink::kWebTextDirectionLeftToRight; | 565 params.anchor_dir = params.focus_dir = blink::kWebTextDirectionLeftToRight; |
| 566 rwhv_mac_->SelectionBoundsChanged(params); | 566 rwhv_mac_->SelectionBoundsChanged(params); |
| 567 EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 567 EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 568 caret_range.ToNSRange(), | 568 caret_range.ToNSRange(), |
| 569 &rect, | 569 &rect, |
| 570 &actual_range)); | 570 &actual_range)); |
| 571 EXPECT_EQ(caret_rect, gfx::Rect(NSRectToCGRect(rect))); | 571 EXPECT_EQ(caret_rect, gfx::Rect(NSRectToCGRect(rect))); |
| 572 EXPECT_EQ(caret_range, gfx::Range(actual_range)); | 572 EXPECT_EQ(caret_range, gfx::Range(actual_range)); |
| 573 | 573 |
| 574 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 574 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 575 gfx::Range(0, 1).ToNSRange(), | 575 gfx::Range(0, 1).ToNSRange(), |
| 576 &rect, | 576 &rect, |
| 577 &actual_range)); | 577 &actual_range)); |
| 578 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 578 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 579 gfx::Range(1, 1).ToNSRange(), | 579 gfx::Range(1, 1).ToNSRange(), |
| 580 &rect, | 580 &rect, |
| 581 &actual_range)); | 581 &actual_range)); |
| 582 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 582 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 583 gfx::Range(2, 3).ToNSRange(), | 583 gfx::Range(2, 3).ToNSRange(), |
| 584 &rect, | 584 &rect, |
| 585 &actual_range)); | 585 &actual_range)); |
| 586 | 586 |
| 587 // Caret moved. | 587 // Caret moved. |
| 588 caret_rect = gfx::Rect(20, 11, 0, 10); | 588 caret_rect = gfx::Rect(20, 11, 0, 10); |
| 589 caret_range = gfx::Range(1, 1); | 589 caret_range = gfx::Range(1, 1); |
| 590 params.anchor_rect = params.focus_rect = caret_rect; | 590 params.anchor_rect = params.focus_rect = caret_rect; |
| 591 rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); | 591 rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range, true); |
| 592 rwhv_mac_->SelectionBoundsChanged(params); | 592 rwhv_mac_->SelectionBoundsChanged(params); |
| 593 EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 593 EXPECT_TRUE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 594 caret_range.ToNSRange(), | 594 caret_range.ToNSRange(), |
| 595 &rect, | 595 &rect, |
| 596 &actual_range)); | 596 &actual_range)); |
| 597 EXPECT_EQ(caret_rect, gfx::Rect(NSRectToCGRect(rect))); | 597 EXPECT_EQ(caret_rect, gfx::Rect(NSRectToCGRect(rect))); |
| 598 EXPECT_EQ(caret_range, gfx::Range(actual_range)); | 598 EXPECT_EQ(caret_range, gfx::Range(actual_range)); |
| 599 | 599 |
| 600 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 600 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 601 gfx::Range(0, 0).ToNSRange(), | 601 gfx::Range(0, 0).ToNSRange(), |
| 602 &rect, | 602 &rect, |
| 603 &actual_range)); | 603 &actual_range)); |
| 604 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 604 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 605 gfx::Range(1, 2).ToNSRange(), | 605 gfx::Range(1, 2).ToNSRange(), |
| 606 &rect, | 606 &rect, |
| 607 &actual_range)); | 607 &actual_range)); |
| 608 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 608 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 609 gfx::Range(2, 3).ToNSRange(), | 609 gfx::Range(2, 3).ToNSRange(), |
| 610 &rect, | 610 &rect, |
| 611 &actual_range)); | 611 &actual_range)); |
| 612 | 612 |
| 613 // No caret. | 613 // No caret. |
| 614 caret_range = gfx::Range(1, 2); | 614 caret_range = gfx::Range(1, 2); |
| 615 rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range); | 615 rwhv_mac_->SelectionChanged(kDummyString, kDummyOffset, caret_range, true); |
| 616 params.anchor_rect = caret_rect; | 616 params.anchor_rect = caret_rect; |
| 617 params.focus_rect = gfx::Rect(30, 11, 0, 10); | 617 params.focus_rect = gfx::Rect(30, 11, 0, 10); |
| 618 rwhv_mac_->SelectionBoundsChanged(params); | 618 rwhv_mac_->SelectionBoundsChanged(params); |
| 619 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 619 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 620 gfx::Range(0, 0).ToNSRange(), | 620 gfx::Range(0, 0).ToNSRange(), |
| 621 &rect, | 621 &rect, |
| 622 &actual_range)); | 622 &actual_range)); |
| 623 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( | 623 EXPECT_FALSE(rwhv_mac_->GetCachedFirstRectForCharacterRange( |
| 624 gfx::Range(0, 1).ToNSRange(), | 624 gfx::Range(0, 1).ToNSRange(), |
| 625 &rect, | 625 &rect, |
| (...skipping 866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1492 } | 1492 } |
| 1493 | 1493 |
| 1494 // This test verifies that |selected_text_| is updated accordingly with | 1494 // This test verifies that |selected_text_| is updated accordingly with |
| 1495 // different variations of RWHVMac::SelectChanged updates. | 1495 // different variations of RWHVMac::SelectChanged updates. |
| 1496 TEST_F(RenderWidgetHostViewMacTest, SelectedText) { | 1496 TEST_F(RenderWidgetHostViewMacTest, SelectedText) { |
| 1497 base::string16 sample_text; | 1497 base::string16 sample_text; |
| 1498 base::UTF8ToUTF16("hello world!", 12, &sample_text); | 1498 base::UTF8ToUTF16("hello world!", 12, &sample_text); |
| 1499 gfx::Range range(6, 11); | 1499 gfx::Range range(6, 11); |
| 1500 | 1500 |
| 1501 // Send a valid selection for the word 'World'. | 1501 // Send a valid selection for the word 'World'. |
| 1502 rwhv_mac_->SelectionChanged(sample_text, 0U, range); | 1502 rwhv_mac_->SelectionChanged(sample_text, 0U, range, true); |
| 1503 EXPECT_EQ("world", selected_text()); | 1503 EXPECT_EQ("world", selected_text()); |
| 1504 | 1504 |
| 1505 // Make the range cover some of the text and extend more. | 1505 // Make the range cover some of the text and extend more. |
| 1506 range.set_end(100); | 1506 range.set_end(100); |
| 1507 rwhv_mac_->SelectionChanged(sample_text, 0U, range); | 1507 rwhv_mac_->SelectionChanged(sample_text, 0U, range, true); |
| 1508 EXPECT_EQ("world!", selected_text()); | 1508 EXPECT_EQ("world!", selected_text()); |
| 1509 | 1509 |
| 1510 // Finally, send an empty range. This should clear the selected text. | 1510 // Finally, send an empty range. This should clear the selected text. |
| 1511 range.set_start(100); | 1511 range.set_start(100); |
| 1512 rwhv_mac_->SelectionChanged(sample_text, 0U, range); | 1512 rwhv_mac_->SelectionChanged(sample_text, 0U, range, true); |
| 1513 EXPECT_EQ("", selected_text()); | 1513 EXPECT_EQ("", selected_text()); |
| 1514 } | 1514 } |
| 1515 | 1515 |
| 1516 // This class is used for IME-related unit tests which verify correctness of IME | 1516 // This class is used for IME-related unit tests which verify correctness of IME |
| 1517 // for pages with multiple RWHVs. | 1517 // for pages with multiple RWHVs. |
| 1518 class InputMethodMacTest : public RenderWidgetHostViewMacTest { | 1518 class InputMethodMacTest : public RenderWidgetHostViewMacTest { |
| 1519 public: | 1519 public: |
| 1520 InputMethodMacTest() {} | 1520 InputMethodMacTest() {} |
| 1521 ~InputMethodMacTest() override {} | 1521 ~InputMethodMacTest() override {} |
| 1522 | 1522 |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1836 // -performKeyEquivalent: now returns YES to prevent further propagation, and | 1836 // -performKeyEquivalent: now returns YES to prevent further propagation, and |
| 1837 // the event is sent to the renderer. | 1837 // the event is sent to the renderer. |
| 1838 EXPECT_TRUE([window performKeyEquivalent:key_down]); | 1838 EXPECT_TRUE([window performKeyEquivalent:key_down]); |
| 1839 EXPECT_EQ(2U, process_host->sink().message_count()); | 1839 EXPECT_EQ(2U, process_host->sink().message_count()); |
| 1840 EXPECT_EQ("RawKeyDown Char", GetInputMessageTypes(process_host)); | 1840 EXPECT_EQ("RawKeyDown Char", GetInputMessageTypes(process_host)); |
| 1841 | 1841 |
| 1842 rwhv_mac_->release_pepper_fullscreen_window_for_testing(); | 1842 rwhv_mac_->release_pepper_fullscreen_window_for_testing(); |
| 1843 } | 1843 } |
| 1844 | 1844 |
| 1845 } // namespace content | 1845 } // namespace content |
| OLD | NEW |