diff options
author | ckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-03 05:50:31 +0000 |
---|---|---|
committer | ckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-03 05:50:31 +0000 |
commit | 1dc111c5e953b418dd7369bea9575aacba0d46e9 (patch) | |
tree | c198263ed17db80a492ec419279304834194937c /ui/gfx/render_text_unittest.cc | |
parent | 6ae6b0d9e547e949d51a030566226c2bd328c0b3 (diff) | |
download | chromium_src-1dc111c5e953b418dd7369bea9575aacba0d46e9.zip chromium_src-1dc111c5e953b418dd7369bea9575aacba0d46e9.tar.gz chromium_src-1dc111c5e953b418dd7369bea9575aacba0d46e9.tar.bz2 |
RenderTextHarfBuzz: Check CreateSkiaTypeface return value against NULL
BUG=398712
Review URL: https://codereview.chromium.org/435583003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/render_text_unittest.cc')
-rw-r--r-- | ui/gfx/render_text_unittest.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc index c2b8975..751942e 100644 --- a/ui/gfx/render_text_unittest.cc +++ b/ui/gfx/render_text_unittest.cc @@ -2262,4 +2262,33 @@ TEST_F(RenderTextTest, HarfBuzz_GlyphBounds) { } } +// Ensure that shaping with a non-existent font does not cause a crash. +TEST_F(RenderTextTest, HarfBuzz_NonExistentFont) { + RenderTextHarfBuzz render_text; + render_text.SetText(ASCIIToUTF16("test")); + render_text.EnsureLayout(); + ASSERT_EQ(1U, render_text.runs_.size()); + internal::TextRunHarfBuzz* run = render_text.runs_[0]; + render_text.ShapeRunWithFont(run, "TheFontThatDoesntExist"); +} + +// Ensure an empty run returns sane values to queries. +TEST_F(RenderTextTest, HarfBuzz_EmptyRun) { + internal::TextRunHarfBuzz run; + const base::string16 kString = ASCIIToUTF16("abcdefgh"); + scoped_ptr<base::i18n::BreakIterator> iter(new base::i18n::BreakIterator( + kString, base::i18n::BreakIterator::BREAK_CHARACTER)); + ASSERT_TRUE(iter->Init()); + + run.range = Range(3, 8); + run.glyph_count = 0; + EXPECT_EQ(Range(0, 0), run.CharRangeToGlyphRange(Range(4, 5))); + EXPECT_EQ(Range(0, 0), run.GetGraphemeBounds(iter.get(), 4)); + Range chars; + Range glyphs; + run.GetClusterAt(4, &chars, &glyphs); + EXPECT_EQ(Range(3, 8), chars); + EXPECT_EQ(Range(0, 0), glyphs); +} + } // namespace gfx |