summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-28 08:29:37 +0000
committerjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-28 08:29:37 +0000
commitcf7bea2907447323cebe0938e85b84d7b66b7356 (patch)
tree78beaddb9daa98ceb296762a522e27a46d56f7ce
parent8eb140edf08599eaecc7ac18709856a29fe2c229 (diff)
downloadchromium_src-cf7bea2907447323cebe0938e85b84d7b66b7356.zip
chromium_src-cf7bea2907447323cebe0938e85b84d7b66b7356.tar.gz
chromium_src-cf7bea2907447323cebe0938e85b84d7b66b7356.tar.bz2
Mac: Add unit test to verify that constructing a FontDescriptor with bad parameters doesn't crash.
BUG=None TEST=Unit test should pass and shouldn't crash. Review URL: http://codereview.chromium.org/6901046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83309 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/common/font_descriptor_mac_unittest.mm29
1 files changed, 26 insertions, 3 deletions
diff --git a/content/common/font_descriptor_mac_unittest.mm b/content/common/font_descriptor_mac_unittest.mm
index afa905b..d4a74d1 100644
--- a/content/common/font_descriptor_mac_unittest.mm
+++ b/content/common/font_descriptor_mac_unittest.mm
@@ -7,13 +7,16 @@
#include <Cocoa/Cocoa.h>
#include "base/logging.h"
-#include "testing/gtest/include/gtest/gtest.h"
+#include "base/utf_string_conversions.h"
+#include "base/sys_string_conversions.h"
+#include "testing/gtest_mac.h"
#include "testing/platform_test.h"
namespace {
class FontSerializationTest : public PlatformTest {};
+const std::string kCourierFontName("Courier");
// Compare 2 fonts, make sure they point at the same font definition and have
// the same style. Only Bold & Italic style attributes are tested since those
@@ -64,6 +67,14 @@ bool CompareFonts(NSFont* font1, NSFont* font2) {
return true;
}
+// Create an NSFont via a FontDescriptor object.
+NSFont* MakeNSFont(const std::string& font_name, float font_point_size) {
+ FontDescriptor desc;
+ desc.font_name = UTF8ToUTF16(font_name);
+ desc.font_point_size = font_point_size;
+ return desc.nsFont();
+}
+
// Verify that serialization and deserialization of fonts with various styles
// is performed correctly by FontDescriptor.
TEST_F(FontSerializationTest, StyledFonts) {
@@ -79,7 +90,7 @@ TEST_F(FontSerializationTest, StyledFonts) {
NSFont* italic_bold_font =
[[NSFontManager sharedFontManager]
- fontWithFamily:@"Courier"
+ fontWithFamily:base::SysUTF8ToNSString(kCourierFontName)
traits:(NSBoldFontMask | NSItalicFontMask)
weight:5
size:18.0];
@@ -88,4 +99,16 @@ TEST_F(FontSerializationTest, StyledFonts) {
EXPECT_TRUE(CompareFonts(italic_bold_font, desc_italic_bold.nsFont()));
}
-} // namsepace
+// Test that FontDescriptor doesn't crash when used with bad parameters.
+// This is important since FontDescriptors are constructed with parameters
+// sent over IPC and bad values must not trigger unexpected behavior.
+TEST_F(FontSerializationTest, BadParameters) {
+ EXPECT_NSNE(MakeNSFont(kCourierFontName, 12), nil);
+ EXPECT_NSNE(MakeNSFont(kCourierFontName, std::numeric_limits<float>::min()),
+ nil);
+ EXPECT_NSNE(MakeNSFont(kCourierFontName, 0), nil);
+ EXPECT_NSNE(MakeNSFont(kCourierFontName, std::numeric_limits<float>::max()),
+ nil);
+}
+
+} // namespace