Update Android's FontHost to return NULL if familyName does not match
R=scroggo@google.com, wangxianzhu@chromium.org
Review URL: https://codereview.chromium.org/23601041
git-svn-id: http://skia.googlecode.com/svn/trunk@11377 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/tests.gyp b/gyp/tests.gyp
index 227f644..43acd94 100644
--- a/gyp/tests.gyp
+++ b/gyp/tests.gyp
@@ -128,6 +128,7 @@
'../tests/TLSTest.cpp',
'../tests/TSetTest.cpp',
'../tests/ToUnicode.cpp',
+ '../tests/Typeface.cpp',
'../tests/UnicodeTest.cpp',
'../tests/UnitTestTest.cpp',
'../tests/UtilsTest.cpp',
diff --git a/src/ports/SkFontConfigInterface_android.cpp b/src/ports/SkFontConfigInterface_android.cpp
index 9a38261..f56308d 100644
--- a/src/ports/SkFontConfigInterface_android.cpp
+++ b/src/ports/SkFontConfigInterface_android.cpp
@@ -413,10 +413,11 @@
}
+ // If no matching family name is found then return false. This allows clients
+ // to be able to search for other fonts instead of forcing them to use the
+ // default font.
if (INVALID_FAMILY_REC_ID == familyRecID) {
- //TODO this ensures that we always return something
- familyRecID = fDefaultFamilyRecID;
- //return false;
+ return false;
}
FontRecID fontRecID = find_best_style(fFontFamilies[familyRecID], style);
diff --git a/tests/Typeface.cpp b/tests/Typeface.cpp
new file mode 100644
index 0000000..76fde7a
--- /dev/null
+++ b/tests/Typeface.cpp
@@ -0,0 +1,30 @@
+
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "Test.h"
+#include "SkTypeface.h"
+
+static void TestDefaultTypeface(skiatest::Reporter* reporter) {
+
+ SkAutoTUnref<SkTypeface> t1(SkTypeface::CreateFromName(NULL, SkTypeface::kNormal));
+ SkAutoTUnref<SkTypeface> t2(SkTypeface::RefDefault(SkTypeface::kNormal));
+
+ REPORTER_ASSERT(reporter, SkTypeface::Equal(t1.get(), t2.get()));
+ REPORTER_ASSERT(reporter, SkTypeface::Equal(0, t1.get()));
+ REPORTER_ASSERT(reporter, SkTypeface::Equal(0, t2.get()));
+ REPORTER_ASSERT(reporter, SkTypeface::Equal(t1.get(), 0));
+ REPORTER_ASSERT(reporter, SkTypeface::Equal(t2.get(), 0));
+
+#ifdef SK_BUILD_FOR_ANDROID
+ SkAutoTUnref<SkTypeface> t3(SkTypeface::CreateFromName("non-existent-font", SkTypeface::kNormal));
+ REPORTER_ASSERT(reporter, NULL == t3.get());
+#endif
+}
+
+#include "TestClassDef.h"
+DEFINE_TESTCLASS("Typeface", TypefaceTestClass, TestDefaultTypeface)