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)