Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0763650a authored by Seigo Nonaka's avatar Seigo Nonaka
Browse files

Notify caller if none of settings are effective.

Now setFontVariationSettings returns false if the given settings is not
effective.

Bug:35764323
Test: ran TextViewTest and PaintTest in cts
Change-Id: Ic31d9e47ec006c8e7bb2c907ff0ea2936bd71d01
parent aa0b3a8d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13217,7 +13217,7 @@ package android.graphics {
    method public void setFilterBitmap(boolean);
    method public void setFlags(int);
    method public void setFontFeatureSettings(java.lang.String);
    method public void setFontVariationSettings(java.lang.String);
    method public boolean setFontVariationSettings(java.lang.String);
    method public void setHinting(int);
    method public void setLetterSpacing(float);
    method public void setLinearText(boolean);
@@ -51177,7 +51177,7 @@ package android.widget {
    method public void setExtractedText(android.view.inputmethod.ExtractedText);
    method public void setFilters(android.text.InputFilter[]);
    method public void setFontFeatureSettings(java.lang.String);
    method public void setFontVariationSettings(java.lang.String);
    method public boolean setFontVariationSettings(java.lang.String);
    method protected boolean setFrame(int, int, int, int);
    method public void setFreezesText(boolean);
    method public void setGravity(int);
+2 −2
Original line number Diff line number Diff line
@@ -13955,7 +13955,7 @@ package android.graphics {
    method public void setFilterBitmap(boolean);
    method public void setFlags(int);
    method public void setFontFeatureSettings(java.lang.String);
    method public void setFontVariationSettings(java.lang.String);
    method public boolean setFontVariationSettings(java.lang.String);
    method public void setHinting(int);
    method public void setLetterSpacing(float);
    method public void setLinearText(boolean);
@@ -55007,7 +55007,7 @@ package android.widget {
    method public void setExtractedText(android.view.inputmethod.ExtractedText);
    method public void setFilters(android.text.InputFilter[]);
    method public void setFontFeatureSettings(java.lang.String);
    method public void setFontVariationSettings(java.lang.String);
    method public boolean setFontVariationSettings(java.lang.String);
    method protected boolean setFrame(int, int, int, int);
    method public void setFreezesText(boolean);
    method public void setGravity(int);
+2 −2
Original line number Diff line number Diff line
@@ -13255,7 +13255,7 @@ package android.graphics {
    method public void setFilterBitmap(boolean);
    method public void setFlags(int);
    method public void setFontFeatureSettings(java.lang.String);
    method public void setFontVariationSettings(java.lang.String);
    method public boolean setFontVariationSettings(java.lang.String);
    method public void setHinting(int);
    method public void setLetterSpacing(float);
    method public void setLinearText(boolean);
@@ -51553,7 +51553,7 @@ package android.widget {
    method public void setExtractedText(android.view.inputmethod.ExtractedText);
    method public void setFilters(android.text.InputFilter[]);
    method public void setFontFeatureSettings(java.lang.String);
    method public void setFontVariationSettings(java.lang.String);
    method public boolean setFontVariationSettings(java.lang.String);
    method protected boolean setFrame(int, int, int, int);
    method public void setFreezesText(boolean);
    method public void setGravity(int);
+9 −4
Original line number Diff line number Diff line
@@ -3802,23 +3802,28 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
     * @param fontVariationSettings font variation settings. You can pass null or empty string as
     *                              no variation settings.
     *
     * @return true if the given settings is effective to at least one font file underlying this
     *         TextView. This function also returns true for empty settings string. Otherwise
     *         returns false.
     *
     * @see #getFontVariationSettings()
     * @see Paint#getFontVariationSettings() Paint.getFontVariationSettings()
     */
    public void setFontVariationSettings(@Nullable String fontVariationSettings) {
    public boolean setFontVariationSettings(@Nullable String fontVariationSettings) {
        final String existingSettings = mTextPaint.getFontVariationSettings();
        if (fontVariationSettings == existingSettings
                || (fontVariationSettings != null
                        && fontVariationSettings.equals(existingSettings))) {
            return;
            return true;
        }
        mTextPaint.setFontVariationSettings(fontVariationSettings);
        boolean effective = mTextPaint.setFontVariationSettings(fontVariationSettings);

        if (mLayout != null) {
        if (effective && mLayout != null) {
            nullLayouts();
            requestLayout();
            invalidate();
        }
        return effective;
    }

    /**
+19 −0
Original line number Diff line number Diff line
@@ -91,6 +91,24 @@ static void Typeface_setDefault(JNIEnv *env, jobject, jlong faceHandle) {
    Typeface::setDefault(face);
}

static jobject Typeface_getSupportedAxes(JNIEnv *env, jobject, jlong faceHandle) {
    Typeface* face = reinterpret_cast<Typeface*>(faceHandle);
    const std::unordered_set<minikin::AxisTag>& tagSet = face->fFontCollection->getSupportedTags();
    const size_t length = tagSet.size();
    if (length == 0) {
        return nullptr;
    }
    std::vector<jint> tagVec(length);
    int index = 0;
    for (const auto& tag : tagSet) {
        tagVec[index++] = tag;
    }
    std::sort(tagVec.begin(), tagVec.end());
    const jintArray result = env->NewIntArray(length);
    env->SetIntArrayRegion(result, 0, length, tagVec.data());
    return result;
}

///////////////////////////////////////////////////////////////////////////////

static const JNINativeMethod gTypefaceMethods[] = {
@@ -103,6 +121,7 @@ static const JNINativeMethod gTypefaceMethods[] = {
    { "nativeCreateFromArray",    "([J)J",
                                           (void*)Typeface_createFromArray },
    { "nativeSetDefault",         "(J)V",   (void*)Typeface_setDefault },
    { "nativeGetSupportedAxes",   "(J)[I",  (void*)Typeface_getSupportedAxes },
};

int register_android_graphics_Typeface(JNIEnv* env)
Loading