Skip to content

Commit 53488be

Browse files
Mobile Ads Developer Relationscopybara-github
authored andcommitted
No public description
PiperOrigin-RevId: 758974266
1 parent cfd1a68 commit 53488be

File tree

3 files changed

+73
-4
lines changed

3 files changed

+73
-4
lines changed

source/android-library/app/src/main/java/com/google/android/ads/nativetemplates/TemplateView.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ public TemplateView(Context context, AttributeSet attrs, int defStyleAttr, int d
7272
initView(context, attrs);
7373
}
7474

75+
public NativeTemplateStyle getStyles() {
76+
return styles;
77+
}
78+
7579
public void setStyles(NativeTemplateStyle styles) {
7680
this.styles = styles;
7781
this.applyStyles();
@@ -82,10 +86,11 @@ public NativeAdView getNativeAdView() {
8286
}
8387

8488
private void applyStyles() {
85-
8689
Drawable mainBackground = styles.getMainBackgroundColor();
8790
if (mainBackground != null) {
88-
background.setBackground(mainBackground);
91+
if (background != null) {
92+
background.setBackground(mainBackground);
93+
}
8994
if (primaryView != null) {
9095
primaryView.setBackground(mainBackground);
9196
}

source/android-library/app/src/main/java/com/google/unity/ads/nativead/UnityNativeTemplateStyle.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.view.LayoutInflater;
2222
import androidx.annotation.NonNull;
2323
import androidx.annotation.Nullable;
24+
import androidx.annotation.VisibleForTesting;
2425
import com.google.android.ads.nativetemplates.NativeTemplateStyle;
2526
import com.google.android.ads.nativetemplates.TemplateView;
2627
import java.util.Objects;
@@ -35,6 +36,8 @@ public final class UnityNativeTemplateStyle {
3536
@Nullable final UnityNativeTemplateTextStyle secondaryTextStyle;
3637
@Nullable final UnityNativeTemplateTextStyle tertiaryTextStyle;
3738

39+
private LayoutInflater layoutInflater;
40+
3841
public UnityNativeTemplateStyle(
3942
@NonNull UnityNativeTemplateType templateType,
4043
@Nullable ColorDrawable mainBackgroundColor,
@@ -50,10 +53,21 @@ public UnityNativeTemplateStyle(
5053
this.tertiaryTextStyle = tertiaryTextStyle;
5154
}
5255

56+
private void setLayoutInflater(Context context) {
57+
this.layoutInflater =
58+
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
59+
}
60+
61+
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
62+
public void setLayoutInflater(LayoutInflater layoutInflater) {
63+
this.layoutInflater = layoutInflater;
64+
}
65+
5366
@Nullable
5467
public TemplateView asTemplateView(Context context) {
55-
LayoutInflater layoutInflater =
56-
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
68+
if (layoutInflater == null) {
69+
setLayoutInflater(context);
70+
}
5771
TemplateView templateView =
5872
(TemplateView) layoutInflater.inflate(templateType.resourceId(), null);
5973
if (templateView == null) {

source/android-library/app/src/test/java/com/google/unity/ads/nativead/UnityNativeTemplateStyleTest.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,35 @@
11
package com.google.unity.ads.nativead;
22

33
import static com.google.common.truth.Truth.assertThat;
4+
import static org.mockito.ArgumentMatchers.any;
5+
import static org.mockito.ArgumentMatchers.anyInt;
6+
import static org.mockito.Mockito.when;
47

8+
import android.content.Context;
59
import android.graphics.Color;
610
import android.graphics.drawable.ColorDrawable;
11+
import android.view.LayoutInflater;
12+
import androidx.test.core.app.ApplicationProvider;
13+
import com.google.android.ads.nativetemplates.NativeTemplateStyle;
14+
import com.google.android.ads.nativetemplates.TemplateView;
715
import org.junit.Before;
16+
import org.junit.Rule;
817
import org.junit.Test;
918
import org.junit.runner.RunWith;
19+
import org.mockito.Mock;
20+
import org.mockito.junit.MockitoJUnit;
21+
import org.mockito.junit.MockitoRule;
1022
import org.robolectric.RobolectricTestRunner;
1123

1224
/** Tests for {@link UnityNativeTemplateStyle} */
1325
@RunWith(RobolectricTestRunner.class)
1426
public final class UnityNativeTemplateStyleTest {
1527

28+
@Rule public final MockitoRule mockito = MockitoJUnit.rule();
29+
@Mock private LayoutInflater mockLayoutInflater;
30+
1631
private UnityNativeTemplateStyle unityNativeTemplateStyle;
32+
private Context context;
1733

1834
@Before
1935
public void setUp() {
@@ -41,6 +57,7 @@ public void setUp() {
4157
/* backgroundColor= */ new ColorDrawable(Color.BLUE),
4258
/* fontStyle= */ UnityNativeTemplateFontStyle.ITALIC,
4359
/* size= */ 10.0));
60+
context = ApplicationProvider.getApplicationContext();
4461
}
4562

4663
@Test
@@ -107,4 +124,37 @@ public void unityNativeTemplateStyle_canBeCompared() throws Exception {
107124
assertThat(unityNativeTemplateStyle.hashCode())
108125
.isNotEqualTo(anotherUnityNativeTemplateStyle.hashCode());
109126
}
127+
128+
@Test
129+
public void unityNativeTemplateStyle_asTemplateView_canBeInflated() throws Exception {
130+
// Arrange.
131+
TemplateView fakeTemplateView = new TemplateView(context);
132+
assertThat(fakeTemplateView.getStyles()).isNull();
133+
when(mockLayoutInflater.inflate(anyInt(), any())).thenReturn(fakeTemplateView);
134+
135+
// Act.
136+
unityNativeTemplateStyle.setLayoutInflater(mockLayoutInflater);
137+
fakeTemplateView = unityNativeTemplateStyle.asTemplateView(context);
138+
NativeTemplateStyle styles = fakeTemplateView.getStyles();
139+
140+
// Assert (styles should have been applied).
141+
assertThat(styles).isNotNull();
142+
assertThat(styles.getMainBackgroundColor().getColor()).isEqualTo(Color.RED);
143+
assertThat(styles.getCallToActionBackgroundColor().getColor()).isEqualTo(Color.BLUE);
144+
assertThat(styles.getCallToActionTypefaceColor()).isEqualTo(Color.GREEN);
145+
assertThat(styles.getCallToActionTextTypeface()).isNotNull();
146+
assertThat(styles.getCallToActionTextSize()).isEqualTo(1.0f);
147+
assertThat(styles.getPrimaryTextBackgroundColor().getColor()).isEqualTo(Color.BLUE);
148+
assertThat(styles.getPrimaryTextTypefaceColor()).isEqualTo(Color.RED);
149+
assertThat(styles.getPrimaryTextTypeface()).isNotNull();
150+
assertThat(styles.getPrimaryTextSize()).isEqualTo(5.0f);
151+
assertThat(styles.getSecondaryTextBackgroundColor().getColor()).isEqualTo(Color.BLUE);
152+
assertThat(styles.getSecondaryTextTypefaceColor()).isEqualTo(Color.RED);
153+
assertThat(styles.getSecondaryTextTypeface()).isNotNull();
154+
assertThat(styles.getSecondaryTextSize()).isEqualTo(20.0f);
155+
assertThat(styles.getTertiaryTextBackgroundColor().getColor()).isEqualTo(Color.BLUE);
156+
assertThat(styles.getTertiaryTextTypefaceColor()).isEqualTo(Color.RED);
157+
assertThat(styles.getTertiaryTextTypeface()).isNotNull();
158+
assertThat(styles.getTertiaryTextSize()).isEqualTo(10.0f);
159+
}
110160
}

0 commit comments

Comments
 (0)