| 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 "ui/gfx/render_text.h" | 5 #include "ui/gfx/render_text.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 1885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1896 | 1896 |
| 1897 const Range second_expected_range = kTestStrings[i].second_line_char_range; | 1897 const Range second_expected_range = kTestStrings[i].second_line_char_range; |
| 1898 ASSERT_EQ(second_expected_range.IsValid() ? 1U : 0U, | 1898 ASSERT_EQ(second_expected_range.IsValid() ? 1U : 0U, |
| 1899 render_text->lines_[1].segments.size()); | 1899 render_text->lines_[1].segments.size()); |
| 1900 if (second_expected_range.IsValid()) | 1900 if (second_expected_range.IsValid()) |
| 1901 EXPECT_EQ(second_expected_range, | 1901 EXPECT_EQ(second_expected_range, |
| 1902 render_text->lines_[1].segments[0].char_range); | 1902 render_text->lines_[1].segments[0].char_range); |
| 1903 } | 1903 } |
| 1904 } | 1904 } |
| 1905 | 1905 |
| 1906 | |
| 1907 TEST_F(RenderTextTest, Win_BreakRunsByUnicodeBlocks) { | 1906 TEST_F(RenderTextTest, Win_BreakRunsByUnicodeBlocks) { |
| 1908 scoped_ptr<RenderTextWin> render_text( | 1907 scoped_ptr<RenderTextWin> render_text( |
| 1909 static_cast<RenderTextWin*>(RenderText::CreateInstance())); | 1908 static_cast<RenderTextWin*>(RenderText::CreateInstance())); |
| 1910 | 1909 |
| 1911 // The '\x25B6' "play character" should break runs. http://crbug.com/278913 | 1910 // The '\x25B6' "play character" should break runs. http://crbug.com/278913 |
| 1912 render_text->SetText(WideToUTF16(L"x\x25B6y")); | 1911 render_text->SetText(WideToUTF16(L"x\x25B6y")); |
| 1913 render_text->EnsureLayout(); | 1912 render_text->EnsureLayout(); |
| 1914 ASSERT_EQ(3U, render_text->runs_.size()); | 1913 ASSERT_EQ(3U, render_text->runs_.size()); |
| 1915 EXPECT_EQ(Range(0, 1), render_text->runs_[0]->range); | 1914 EXPECT_EQ(Range(0, 1), render_text->runs_[0]->range); |
| 1916 EXPECT_EQ(Range(1, 2), render_text->runs_[1]->range); | 1915 EXPECT_EQ(Range(1, 2), render_text->runs_[1]->range); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1967 std::copy(cases[i].glyph_to_char, cases[i].glyph_to_char + 4, | 1966 std::copy(cases[i].glyph_to_char, cases[i].glyph_to_char + 4, |
| 1968 run.glyph_to_char.get()); | 1967 run.glyph_to_char.get()); |
| 1969 run.is_rtl = cases[i].is_rtl; | 1968 run.is_rtl = cases[i].is_rtl; |
| 1970 for (size_t j = 0; j < 4; ++j) { | 1969 for (size_t j = 0; j < 4; ++j) { |
| 1971 SCOPED_TRACE(base::StringPrintf("Case %" PRIuS ", char %" PRIuS, i, j)); | 1970 SCOPED_TRACE(base::StringPrintf("Case %" PRIuS ", char %" PRIuS, i, j)); |
| 1972 EXPECT_EQ(cases[i].char_to_glyph_expected[j], run.CharToGlyph(j)); | 1971 EXPECT_EQ(cases[i].char_to_glyph_expected[j], run.CharToGlyph(j)); |
| 1973 EXPECT_EQ(cases[i].char_range_to_glyph_range_expected[j], | 1972 EXPECT_EQ(cases[i].char_range_to_glyph_range_expected[j], |
| 1974 run.CharRangeToGlyphRange(Range(j, j + 1))); | 1973 run.CharRangeToGlyphRange(Range(j, j + 1))); |
| 1975 } | 1974 } |
| 1976 } | 1975 } |
| 1977 | |
| 1978 } | 1976 } |
| 1979 | 1977 |
| 1980 TEST_F(RenderTextTest, HarfBuzz_RunDirection) { | 1978 TEST_F(RenderTextTest, HarfBuzz_RunDirection) { |
| 1981 RenderTextHarfBuzz render_text; | 1979 RenderTextHarfBuzz render_text; |
| 1982 const base::string16 mixed = | 1980 const base::string16 mixed = |
| 1983 WideToUTF16(L"\x05D0\x05D1" L"1234" L"\x05D2\x05D3"); | 1981 WideToUTF16(L"\x05D0\x05D1" L"1234" L"\x05D2\x05D3"); |
| 1984 render_text.SetText(mixed); | 1982 render_text.SetText(mixed); |
| 1985 render_text.EnsureLayout(); | 1983 render_text.EnsureLayout(); |
| 1986 ASSERT_EQ(3U, render_text.runs_.size()); | 1984 ASSERT_EQ(3U, render_text.runs_.size()); |
| 1987 EXPECT_TRUE(render_text.runs_[0]->is_rtl); | 1985 EXPECT_TRUE(render_text.runs_[0]->is_rtl); |
| 1988 EXPECT_FALSE(render_text.runs_[1]->is_rtl); | 1986 EXPECT_FALSE(render_text.runs_[1]->is_rtl); |
| 1989 EXPECT_TRUE(render_text.runs_[2]->is_rtl); | 1987 EXPECT_TRUE(render_text.runs_[2]->is_rtl); |
| 1990 } | 1988 } |
| 1991 | 1989 |
| 1990 TEST_F(RenderTextTest, HarfBuzz_BreakRunsByUnicodeBlocks) { |
| 1991 RenderTextHarfBuzz render_text; |
| 1992 |
| 1993 // The '\x25B6' "play character" should break runs. http://crbug.com/278913 |
| 1994 render_text.SetText(WideToUTF16(L"x\x25B6y")); |
| 1995 render_text.EnsureLayout(); |
| 1996 ASSERT_EQ(3U, render_text.runs_.size()); |
| 1997 EXPECT_EQ(Range(0, 1), render_text.runs_[0]->range); |
| 1998 EXPECT_EQ(Range(1, 2), render_text.runs_[1]->range); |
| 1999 EXPECT_EQ(Range(2, 3), render_text.runs_[2]->range); |
| 2000 |
| 2001 render_text.SetText(WideToUTF16(L"x \x25B6 y")); |
| 2002 render_text.EnsureLayout(); |
| 2003 ASSERT_EQ(3U, render_text.runs_.size()); |
| 2004 EXPECT_EQ(Range(0, 2), render_text.runs_[0]->range); |
| 2005 EXPECT_EQ(Range(2, 3), render_text.runs_[1]->range); |
| 2006 EXPECT_EQ(Range(3, 5), render_text.runs_[2]->range); |
| 2007 } |
| 2008 |
| 1992 } // namespace gfx | 2009 } // namespace gfx |
| OLD | NEW |