summaryrefslogtreecommitdiffstats
path: root/ui/gfx/render_text_unittest.cc
diff options
context:
space:
mode:
authorckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-03 05:50:31 +0000
committerckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-03 05:50:31 +0000
commit1dc111c5e953b418dd7369bea9575aacba0d46e9 (patch)
treec198263ed17db80a492ec419279304834194937c /ui/gfx/render_text_unittest.cc
parent6ae6b0d9e547e949d51a030566226c2bd328c0b3 (diff)
downloadchromium_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.cc29
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