Permalink
Browse files

Release: version 4.0.0

  • Loading branch information...
Nathan Shayefar
Nathan Shayefar committed Oct 6, 2015
1 parent ee0ed8c commit 1415bfe0d65727adb44d396cdb78c60a29b11d60
Showing with 11,017 additions and 3,425 deletions.
  1. +19 −0 CHANGELOG.md
  2. +18 −3 README.md
  3. +9 −9 extras/src/com/mopub/nativeads/FacebookNative.java
  4. +50 −12 extras/src/com/mopub/nativeads/InMobiNative.java
  5. +85 −46 extras/src/com/mopub/nativeads/MillennialNative.java
  6. +2 −2 mopub-sample/AndroidManifest.xml
  7. +2 −2 mopub-sample/build.gradle
  8. +2 −2 mopub-sample/res/layout/native_ad_list_item.xml
  9. +1 −1 mopub-sample/res/layout/native_list_view_fragment.xml
  10. +1 −1 mopub-sample/res/values/strings.xml
  11. +1 −1 mopub-sample/src/main/java/com/mopub/simpleadsdemo/LoggingUtils.java
  12. +10 −7 mopub-sample/src/main/java/com/mopub/simpleadsdemo/NativeGalleryFragment.java
  13. +9 −13 mopub-sample/src/main/java/com/mopub/simpleadsdemo/NativeListViewFragment.java
  14. +14 −8 mopub-sample/src/main/java/com/mopub/simpleadsdemo/NativeRecyclerViewFragment.java
  15. +14 −2 mopub-sdk/build.gradle
  16. +7 −0 mopub-sdk/pom.xml
  17. +2 −1 mopub-sdk/src/main/java/com/mopub/common/AdType.java
  18. +9 −0 mopub-sdk/src/main/java/com/mopub/common/DataKeys.java
  19. +1 −1 mopub-sdk/src/main/java/com/mopub/common/MoPub.java
  20. +1 −0 mopub-sdk/src/main/java/com/mopub/common/MoPubBrowser.java
  21. +11 −4 mopub-sdk/src/main/java/com/mopub/common/event/BaseEvent.java
  22. +50 −0 mopub-sdk/src/main/java/com/mopub/common/event/Event.java
  23. +256 −0 mopub-sdk/src/main/java/com/mopub/common/event/EventDetails.java
  24. +37 −5 mopub-sdk/src/main/java/com/mopub/common/event/EventSampler.java
  25. +4 −1 mopub-sdk/src/main/java/com/mopub/common/util/Drawables.java
  26. +7 −0 mopub-sdk/src/main/java/com/mopub/common/util/ResponseHeader.java
  27. +4 −1 mopub-sdk/src/main/java/com/mopub/mobileads/AdTypeTranslator.java
  28. +0 −61 mopub-sdk/src/main/java/com/mopub/mobileads/AdViewController.java
  29. +23 −2 mopub-sdk/src/main/java/com/mopub/mobileads/BaseVideoPlayerActivity.java
  30. +3 −2 mopub-sdk/src/main/java/com/mopub/mobileads/BaseVideoViewController.java
  31. +3 −70 mopub-sdk/src/main/java/com/mopub/mobileads/MoPubInterstitial.java
  32. +4 −147 mopub-sdk/src/main/java/com/mopub/mobileads/MoPubView.java
  33. +5 −1 mopub-sdk/src/main/java/com/mopub/mobileads/MraidVideoPlayerActivity.java
  34. +2 −2 mopub-sdk/src/main/java/com/mopub/mobileads/RepeatingHandlerRunnable.java
  35. +18 −0 mopub-sdk/src/main/java/com/mopub/mobileads/VastBaseInLineWrapperXmlManager.java
  36. +51 −0 mopub-sdk/src/main/java/com/mopub/mobileads/VastExtensionParentXmlManager.java
  37. +69 −0 mopub-sdk/src/main/java/com/mopub/mobileads/VastExtensionXmlManager.java
  38. +7 −2 mopub-sdk/src/main/java/com/mopub/mobileads/VastManager.java
  39. +62 −11 mopub-sdk/src/main/java/com/mopub/mobileads/VastVideoConfig.java
  40. +15 −8 mopub-sdk/src/main/java/com/mopub/mobileads/VastVideoProgressBarWidget.java
  41. +9 −4 mopub-sdk/src/main/java/com/mopub/mobileads/VastVideoViewController.java
  42. +30 −0 mopub-sdk/src/main/java/com/mopub/mobileads/VastXmlManagerAggregator.java
  43. +23 −0 mopub-sdk/src/main/java/com/mopub/mobileads/VideoViewabilityTracker.java
  44. +112 −0 mopub-sdk/src/main/java/com/mopub/mobileads/VideoViewabilityTrackerXmlManager.java
  45. +3 −1 mopub-sdk/src/main/java/com/mopub/mobileads/factories/MoPubViewFactory.java
  46. +7 −3 mopub-sdk/src/main/java/com/mopub/mobileads/factories/VastManagerFactory.java
  47. +14 −3 mopub-sdk/src/main/java/com/mopub/mobileads/resource/CloseButtonDrawable.java
  48. +3 −1 mopub-sdk/src/main/java/com/mopub/mobileads/resource/DrawableConstants.java
  49. +4 −0 mopub-sdk/src/main/java/com/mopub/mobileads/resource/ProgressBarDrawable.java
  50. +4 −3 mopub-sdk/src/main/java/com/mopub/mraid/MraidVideoViewController.java
  51. +90 −0 mopub-sdk/src/main/java/com/mopub/nativeads/AdRendererRegistry.java
  52. +3 −6 mopub-sdk/src/main/java/com/mopub/nativeads/AdapterHelper.java
  53. +0 −414 mopub-sdk/src/main/java/com/mopub/nativeads/BaseForwardingNativeAd.java
  54. +122 −0 mopub-sdk/src/main/java/com/mopub/nativeads/BaseNativeAd.java
  55. +11 −0 mopub-sdk/src/main/java/com/mopub/nativeads/ClickInterface.java
  56. +2 −18 mopub-sdk/src/main/java/com/mopub/nativeads/CustomEventNative.java
  57. +8 −0 mopub-sdk/src/main/java/com/mopub/nativeads/CustomEventNativeAdapter.java
  58. +479 −0 mopub-sdk/src/main/java/com/mopub/nativeads/HttpDiskCompositeDataSource.java
  59. +15 −0 mopub-sdk/src/main/java/com/mopub/nativeads/ImpressionInterface.java
  60. +35 −29 mopub-sdk/src/main/java/com/mopub/nativeads/ImpressionTracker.java
  61. +66 −0 mopub-sdk/src/main/java/com/mopub/nativeads/IntInterval.java
  62. +395 −0 mopub-sdk/src/main/java/com/mopub/nativeads/MediaLayout.java
  63. +99 −0 mopub-sdk/src/main/java/com/mopub/nativeads/MediaViewBinder.java
  64. +49 −0 mopub-sdk/src/main/java/com/mopub/nativeads/MediaViewHolder.java
  65. +3 −23 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubAdAdapter.java
  66. +10 −2 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubAdRenderer.java
  67. +92 −14 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubCustomEventNative.java
  68. +888 −0 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubCustomEventVideoNative.java
  69. +44 −68 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubNative.java
  70. +0 −45 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubNativeAdPositioning.java
  71. +0 −57 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubNativeAdRenderer.java
  72. +11 −7 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubRecyclerAdapter.java
  73. +89 −0 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubStaticNativeAdRenderer.java
  74. +47 −74 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubStreamAdPlacer.java
  75. +90 −0 mopub-sdk/src/main/java/com/mopub/nativeads/MoPubVideoNativeAdRenderer.java
  76. +165 −0 mopub-sdk/src/main/java/com/mopub/nativeads/NativeAd.java
  77. +3 −3 mopub-sdk/src/main/java/com/mopub/nativeads/NativeAdData.java
  78. +0 −65 mopub-sdk/src/main/java/com/mopub/nativeads/NativeAdInterface.java
  79. +67 −22 mopub-sdk/src/main/java/com/mopub/nativeads/NativeAdSource.java
  80. +22 −40 mopub-sdk/src/main/java/com/mopub/nativeads/NativeAdViewHelper.java
  81. +150 −0 mopub-sdk/src/main/java/com/mopub/nativeads/NativeClickHandler.java
  82. +2 −1 mopub-sdk/src/main/java/com/mopub/nativeads/NativeErrorCode.java
  83. +434 −0 mopub-sdk/src/main/java/com/mopub/nativeads/NativeFullScreenVideoView.java
  84. +122 −0 mopub-sdk/src/main/java/com/mopub/nativeads/NativeImageHelper.java
  85. +122 −0 mopub-sdk/src/main/java/com/mopub/nativeads/NativeRendererHelper.java
  86. +0 −440 mopub-sdk/src/main/java/com/mopub/nativeads/NativeResponse.java
  87. +619 −0 mopub-sdk/src/main/java/com/mopub/nativeads/NativeVideoController.java
  88. +330 −0 mopub-sdk/src/main/java/com/mopub/nativeads/NativeVideoViewController.java
  89. +0 −140 mopub-sdk/src/main/java/com/mopub/nativeads/NativeViewHolder.java
  90. +9 −9 mopub-sdk/src/main/java/com/mopub/nativeads/PlacementData.java
  91. +250 −0 mopub-sdk/src/main/java/com/mopub/nativeads/StaticNativeAd.java
  92. +49 −0 mopub-sdk/src/main/java/com/mopub/nativeads/StaticNativeViewHolder.java
  93. +145 −0 mopub-sdk/src/main/java/com/mopub/nativeads/VideoNativeAd.java
  94. +7 −7 mopub-sdk/src/main/java/com/mopub/nativeads/ViewBinder.java
  95. +25 −7 mopub-sdk/src/main/java/com/mopub/nativeads/VisibilityTracker.java
  96. +59 −17 mopub-sdk/src/main/java/com/mopub/network/AdRequest.java
  97. +18 −0 mopub-sdk/src/main/java/com/mopub/network/AdResponse.java
  98. +27 −0 mopub-sdk/src/main/java/com/mopub/network/HeaderUtils.java
  99. +11 −11 mopub-sdk/src/main/java/com/mopub/network/TrackingRequest.java
  100. +1 −1 mopub-sdk/src/main/resources/fabric/com.mopub.sdk.android.mopub.properties
  101. +41 −0 mopub-sdk/src/test/java/com/mopub/common/event/EventSamplerTest.java
  102. +1 −1 mopub-sdk/src/test/java/com/mopub/mobileads/AdTypeTranslatorTest.java
  103. +0 −7 mopub-sdk/src/test/java/com/mopub/mobileads/MoPubInterstitialTest.java
  104. +0 −7 mopub-sdk/src/test/java/com/mopub/mobileads/MoPubViewTest.java
  105. +59 −1 mopub-sdk/src/test/java/com/mopub/mobileads/VastBaseInLineWrapperXmlManagerTest.java
  106. +42 −0 mopub-sdk/src/test/java/com/mopub/mobileads/VastExtensionParentXmlManagerTest.java
  107. +99 −0 mopub-sdk/src/test/java/com/mopub/mobileads/VastExtensionXmlManagerTest.java
  108. +1 −1 mopub-sdk/src/test/java/com/mopub/mobileads/VastManagerTest.java
  109. +28 −8 mopub-sdk/src/test/java/com/mopub/mobileads/VastVideoConfigTest.java
  110. +2 −1 mopub-sdk/src/test/java/com/mopub/mobileads/VastVideoProgressBarWidgetTest.java
  111. +56 −1 mopub-sdk/src/test/java/com/mopub/mobileads/VastXmlManagerAggregatorTest.java
  112. +7 −0 mopub-sdk/src/test/java/com/mopub/mobileads/VastXmlManagerTest.java
  113. +234 −0 mopub-sdk/src/test/java/com/mopub/mobileads/VideoViewabilityTrackerXmlManagerTest.java
  114. +1 −1 mopub-sdk/src/test/java/com/mopub/mobileads/test/support/TestVastManagerFactory.java
  115. +94 −0 mopub-sdk/src/test/java/com/mopub/nativeads/AdRendererRegistryTest.java
  116. +2 −3 mopub-sdk/src/test/java/com/mopub/nativeads/AdapterHelperTest.java
  117. +66 −0 mopub-sdk/src/test/java/com/mopub/nativeads/BaseNativeAdTest.java
  118. +11 −5 mopub-sdk/src/test/java/com/mopub/nativeads/CustomEventNativeAdapterTest.java
  119. +59 −71 mopub-sdk/src/test/java/com/mopub/nativeads/ImpressionTrackerTest.java
  120. +90 −0 mopub-sdk/src/test/java/com/mopub/nativeads/MediaLayoutTest.java
  121. +0 −17 mopub-sdk/src/test/java/com/mopub/nativeads/MoPubAdAdapterTest.java
  122. +11 −15 mopub-sdk/src/test/java/com/mopub/nativeads/MoPubCustomEventNativeTest.java
  123. +178 −0 mopub-sdk/src/test/java/com/mopub/nativeads/MoPubCustomEventVideoNativeTest.java
  124. +11 −24 mopub-sdk/src/test/java/com/mopub/nativeads/MoPubNativeTest.java
  125. +15 −12 mopub-sdk/src/test/java/com/mopub/nativeads/MoPubRecyclerAdapterTest.java
  126. +39 −35 .../java/com/mopub/nativeads/{MoPubNativeAdRendererTest.java → MoPubStaticNativeAdRendererTest.java}
  127. +103 −36 ...c/test/java/com/mopub/nativeads/{MoPubForwardingNativeAdTest.java → MoPubStaticNativeAdTest.java}
  128. +51 −72 mopub-sdk/src/test/java/com/mopub/nativeads/MoPubStreamAdPlacerTest.java
  129. +789 −0 mopub-sdk/src/test/java/com/mopub/nativeads/MoPubVideoNativeAdTest.java
  130. +97 −45 mopub-sdk/src/test/java/com/mopub/nativeads/NativeAdSourceTest.java
  131. +189 −0 mopub-sdk/src/test/java/com/mopub/nativeads/NativeAdTest.java
  132. +29 −94 mopub-sdk/src/test/java/com/mopub/nativeads/NativeAdViewHelperTest.java
  133. +135 −0 mopub-sdk/src/test/java/com/mopub/nativeads/NativeClickHandlerTest.java
  134. +499 −0 mopub-sdk/src/test/java/com/mopub/nativeads/NativeFullScreenVideoViewTest.java
  135. +0 −376 mopub-sdk/src/test/java/com/mopub/nativeads/NativeResponseTest.java
  136. +745 −0 mopub-sdk/src/test/java/com/mopub/nativeads/NativeVideoControllerTest.java
  137. +357 −0 mopub-sdk/src/test/java/com/mopub/nativeads/NativeVideoViewControllerTest.java
  138. +0 −465 mopub-sdk/src/test/java/com/mopub/nativeads/NativeViewHolderTest.java
  139. +126 −141 mopub-sdk/src/test/java/com/mopub/nativeads/PlacementDataTest.java
  140. +40 −7 ...sdk/src/test/java/com/mopub/nativeads/{BaseForwardingNativeAdTest.java → StaticNativeAdTest.java}
  141. +154 −0 mopub-sdk/src/test/java/com/mopub/nativeads/StaticNativeViewHolderTest.java
  142. +58 −0 mopub-sdk/src/test/java/com/mopub/nativeads/VideoNativeAdTest.java
  143. +10 −10 mopub-sdk/src/test/java/com/mopub/nativeads/VisibilityTrackerTest.java
  144. +106 −6 mopub-sdk/src/test/java/com/mopub/network/AdRequestTest.java
@@ -1,3 +1,22 @@
## Version 4.0.0 (October 6, 2015)

Version 4.0.0 includes a number of improvements to our Native Ads systems under the hood. This means a few changes for publishers integrating the ads. The [Native Ads Integration Guide](https://github.com/mopub/mopub-android-sdk/wiki/Native-Ads-Integration) describes all the steps you'll need to integrate 4.0.0.

**Native Ads Changes**
- `MoPubNativeAdRenderer` has been replaced by `MoPubStaticNativeRenderer`
- When requesting ads using `MoPubNative`, you must instantiate and register a `MoPubStaticNativeAdRenderer`. See the [Integration Document](https://github.com/mopub/mopub-android-sdk/wiki/Legacy-Native-Ads-Integration) for more details.
- `NativeResponse` has been replaced with `NativeAd`
- `NativeAd` has a new API that supports creating and rendering `View`s for Native Ads.
- `#createAdView` returns a `View` that can hold data for the `NativeAd`
- `#renderAdView` will populate the `View` with ad data.
- Other lifecycle methods from `NativeResponse` remain:
- `#prepare`, `#clear`, `#destroy`
- The process of writing new `CustomEventNative` instances has changed. These changes will support more dynamic, flexible, and attractive Native Ad formats in the future. All bundled native Custom Event files have been updated to use the new API.

**Removed Old Code**
- Removed legacy banner/interestitial listeners, deprecated in 1.11
- Removed legacy custom event implementation ("custom event methods") deprecated in 1.10

## Version 3.13.0 (September 21, 2015)

- **Android M Support** - Replaced usage of the now-deprecated HttpClient with HttpURLConnection.
@@ -27,7 +27,7 @@ The MoPub SDK is available via:
}
dependencies {
compile('com.mopub:mopub-sdk:3.13.0@aar') {
compile('com.mopub:mopub-sdk:4.0.0@aar') {
transitive = true
}
}
@@ -61,9 +61,24 @@ The MoPub SDK is available via:

## New in this Version

Please view the [changelog](https://github.com/mopub/mopub-android-sdk/blob/master/CHANGELOG.md) for a complete list of additions, fixes, and enhancements in the lastest release..
Please view the [changelog](https://github.com/mopub/mopub-android-sdk/blob/master/CHANGELOG.md) for a complete list of additions, fixes, and enhancements in the latest release.

- **Android M Support** - Replaced usage of the now-deprecated HttpClient with HttpURLConnection.
Version 4.0.0 includes a number of improvements to our Native Ads systems under the hood. This means a few changes for publishers integrating the ads. The [Native Ads Integration Guide](https://github.com/mopub/mopub-android-sdk/wiki/Native-Ads-Integration) describes all the steps you'll need to integrate 4.0.0.

**Native Ads Changes**
- `MoPubNativeAdRenderer` has been replaced by `MoPubStaticNativeRenderer`
- When requesting ads using `MoPubNative`, you must instantiate and register a `MoPubStaticNativeAdRenderer`. See the [Integration Document](https://github.com/mopub/mopub-android-sdk/wiki/Legacy-Native-Ads-Integration) for more details.
- `NativeResponse` has been replaced with `NativeAd`
- `NativeAd` has a new API that supports creating and rendering `View`s for Native Ads.
- `#createAdView` returns a `View` that can hold data for the `NativeAd`
- `#renderAdView` will populate the `View` with ad data.
- Other lifecycle methods from `NativeResponse` remain:
- `#prepare`, `#clear`, `#destroy`
- The process of writing new `CustomEventNative` instances has changed. These changes will support more dynamic, flexible, and attractive Native Ad formats in the future. All bundled native Custom Event files have been updated to use the new API.

**Removed Old Code**
- Removed legacy banner/interestitial listeners, deprecated in 1.11
- Removed legacy custom event implementation ("custom event methods") deprecated in 1.10

## Requirements

@@ -14,6 +14,8 @@
import java.util.List;
import java.util.Map;

import static com.mopub.nativeads.NativeImageHelper.preCacheImages;

/*
* Tested with Facebook SDK 3.23.1
*/
@@ -35,25 +37,25 @@ protected void loadNativeAd(final Context context,
return;
}

final FacebookForwardingNativeAd facebookForwardingNativeAd =
new FacebookForwardingNativeAd(context,
final FacebookStaticNativeAd facebookStaticNativeAd =
new FacebookStaticNativeAd(context,
new NativeAd(context, placementId), customEventNativeListener);
facebookForwardingNativeAd.loadAd();
facebookStaticNativeAd.loadAd();
}

private boolean extrasAreValid(final Map<String, String> serverExtras) {
final String placementId = serverExtras.get(PLACEMENT_ID_KEY);
return (placementId != null && placementId.length() > 0);
}

static class FacebookForwardingNativeAd extends BaseForwardingNativeAd implements AdListener, ImpressionListener {
static class FacebookStaticNativeAd extends StaticNativeAd implements AdListener, ImpressionListener {
private static final String SOCIAL_CONTEXT_FOR_AD = "socialContextForAd";

private final Context mContext;
private final NativeAd mNativeAd;
private final CustomEventNativeListener mCustomEventNativeListener;

FacebookForwardingNativeAd(final Context context,
FacebookStaticNativeAd(final Context context,
final NativeAd nativeAd,
final CustomEventNativeListener customEventNativeListener) {
mContext = context.getApplicationContext();
@@ -101,10 +103,10 @@ public void onAdLoaded(final Ad ad) {
imageUrls.add(getIconImageUrl());
}

preCacheImages(mContext, imageUrls, new ImageListener() {
preCacheImages(mContext, imageUrls, new NativeImageHelper.ImageListener() {
@Override
public void onImagesCached() {
mCustomEventNativeListener.onNativeAdLoaded(FacebookForwardingNativeAd.this);
mCustomEventNativeListener.onNativeAdLoaded(FacebookStaticNativeAd.this);
}

@Override
@@ -142,8 +144,6 @@ public void onLoggingImpression(final Ad ad) {
@Override
public void prepare(final View view) {
mNativeAd.registerViewForInteraction(view);
setOverridingClickTracker(true);
setOverridingImpressionTracker(true);
}

@Override
@@ -10,6 +10,8 @@
import com.inmobi.monetization.IMErrorCode;
import com.inmobi.monetization.IMNative;
import com.inmobi.monetization.IMNativeListener;
import com.mopub.common.logging.MoPubLog;
import com.mopub.network.TrackingRequest;

import org.json.JSONException;
import org.json.JSONObject;
@@ -21,6 +23,7 @@

import static com.mopub.common.util.Json.getJsonValue;
import static com.mopub.common.util.Numbers.parseDouble;
import static com.mopub.nativeads.NativeImageHelper.preCacheImages;

/*
* Tested with InMobi SDK 4.4.1
@@ -50,18 +53,21 @@ protected void loadNativeAd(final Context context,
}

InMobi.initialize(activity, appId);
final InMobiForwardingNativeAd inMobiForwardingNativeAd =
new InMobiForwardingNativeAd(context, customEventNativeListener);
inMobiForwardingNativeAd.setIMNative(new IMNative(inMobiForwardingNativeAd));
inMobiForwardingNativeAd.loadAd();
final InMobiStaticNativeAd inMobiStaticNativeAd =
new InMobiStaticNativeAd(context,
new ImpressionTracker(context),
new NativeClickHandler(context),
customEventNativeListener);
inMobiStaticNativeAd.setIMNative(new IMNative(inMobiStaticNativeAd));
inMobiStaticNativeAd.loadAd();
}

private boolean extrasAreValid(final Map<String, String> serverExtras) {
final String placementId = serverExtras.get(APP_ID_KEY);
return (placementId != null && placementId.length() > 0);
}

static class InMobiForwardingNativeAd extends BaseForwardingNativeAd implements IMNativeListener {
static class InMobiStaticNativeAd extends StaticNativeAd implements IMNativeListener {
static final int IMPRESSION_MIN_TIME_VIEWED = 0;

// Modifiable keys
@@ -78,11 +84,17 @@ private boolean extrasAreValid(final Map<String, String> serverExtras) {

private final Context mContext;
private final CustomEventNativeListener mCustomEventNativeListener;
private final ImpressionTracker mImpressionTracker;
private final NativeClickHandler mNativeClickHandler;
private IMNative mImNative;

InMobiForwardingNativeAd(final Context context,
InMobiStaticNativeAd(final Context context,
final ImpressionTracker impressionTracker,
final NativeClickHandler nativeClickHandler,
final CustomEventNativeListener customEventNativeListener) {
mContext = context.getApplicationContext();
mImpressionTracker = impressionTracker;
mNativeClickHandler = nativeClickHandler;
mCustomEventNativeListener = customEventNativeListener;
}

@@ -105,7 +117,7 @@ public void onNativeRequestSucceeded(final IMNative imNative) {
try {
parseJson(imNative);
} catch (JSONException e) {
mCustomEventNativeListener.onNativeAdFailed(NativeErrorCode.INVALID_JSON);
mCustomEventNativeListener.onNativeAdFailed(NativeErrorCode.INVALID_RESPONSE);
return;
}

@@ -120,10 +132,10 @@ public void onNativeRequestSucceeded(final IMNative imNative) {
imageUrls.add(iconUrl);
}

preCacheImages(mContext, imageUrls, new ImageListener() {
preCacheImages(mContext, imageUrls, new NativeImageHelper.ImageListener() {
@Override
public void onImagesCached() {
mCustomEventNativeListener.onNativeAdLoaded(InMobiForwardingNativeAd.this);
mCustomEventNativeListener.onNativeAdLoaded(InMobiStaticNativeAd.this);
}

@Override
@@ -146,6 +158,7 @@ public void onNativeRequestFailed(final IMErrorCode errorCode) {
}
}

// Lifecycle Handlers
@Override
public void prepare(final View view) {
if (view != null && view instanceof ViewGroup) {
@@ -155,16 +168,33 @@ public void prepare(final View view) {
} else {
Log.e("MoPub", "InMobi did not receive ViewGroup to attachToView, unable to record impressions");
}
mImpressionTracker.addView(view, this);
mNativeClickHandler.setOnClickListener(view, this);
}

@Override
public void handleClick(final View view) {
mImNative.handleClick(null);
public void clear(final View view) {
mImpressionTracker.removeView(view);
mNativeClickHandler.clearOnClickListener(view);
}

@Override
public void destroy() {
mImNative.detachFromView();
mImpressionTracker.destroy();
}

// Event Handlers
@Override
public void recordImpression(final View view) {
notifyAdImpressed();
}

@Override
public void handleClick(final View view) {
notifyAdClicked();
mNativeClickHandler.openClickDestinationUrl(getClickDestinationUrl(), view);
mImNative.handleClick(null);
}

void parseJson(final IMNative imNative) throws JSONException {
@@ -184,7 +214,15 @@ void parseJson(final IMNative imNative) throws JSONException {
setIconImageUrl(getJsonValue(iconJsonObject, URL, String.class));
}

setClickDestinationUrl(getJsonValue(jsonObject, LANDING_URL, String.class));
final String clickDestinationUrl = getJsonValue(jsonObject, LANDING_URL, String.class);
if (clickDestinationUrl == null) {
final String errorMessage = "InMobi JSON response missing required key: "
+ LANDING_URL + ". Failing over.";
MoPubLog.d(errorMessage);
throw new JSONException(errorMessage);
}

setClickDestinationUrl(clickDestinationUrl);
setCallToAction(getJsonValue(jsonObject, CTA, String.class));

try {
Oops, something went wrong.

0 comments on commit 1415bfe

Please sign in to comment.