void fireAdClicked() { if (adView != null) { adView.getAdDispatcher().onAdClicked(); adView.interacted(); } }
void fireAdClickedWithReturnUrl(String clickUrl) { if (adView != null) { adView.getAdDispatcher().onAdClicked(clickUrl); adView.interacted(); } }
@Override public void onGeolocationPermissionsHidePrompt() { if ((adView != null) && !adView.isInterstitial() && !adView.isMRAIDExpanded()) { this.adView.getAdDispatcher().onAdCollapsed(); } }
private static void callDispatchAppEvent(AdWebView webView, Uri uri) { String event = uri.getQueryParameter("event"); String data = uri.getQueryParameter("data"); webView.adView.getAdDispatcher().onAppEvent(event, data); }
private void handleVideoError() { if (adReady && !videoComplete) { //AdReady has been fired but video errored before Playback completion stopOMIDAdSession(); adWebView.adView.getAdDispatcher().toggleAutoRefresh(); } else { // AdReady has not been fired yet continue to do waterfall adWebView.fail(); } }
@Override public void onGeolocationPermissionsShowPrompt(final String origin, final GeolocationPermissions.Callback callback) { if (SDKSettings.isLocationEnabledForCreative()) { Context dialogContext = (adWebView != null) ? ViewUtil.getTopContext(adWebView) : context; AlertDialog.Builder adb = new AlertDialog.Builder(dialogContext); String title = String.format(this.context.getResources().getString(R.string.html5_geo_permission_prompt_title), origin); adb.setTitle(title); adb.setMessage(R.string.html5_geo_permission_prompt); adb.setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { callback.invoke(origin, true, true); } }); adb.setNegativeButton(R.string.deny, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { callback.invoke(origin, false, false); } }); adb.create().show(); // We're presenting a modal dialog view, so this is equivalent to an expand // suppress if already expanded in MRAID if ((adView != null) && !adView.isInterstitial() && !adView.isMRAIDExpanded()) { this.adView.getAdDispatcher().onAdExpanded(); } } else { callback.invoke(origin, false, false); } }
@Test public void testMRAIDOpenFailure() { String uri = ""; String mraidCall = String.format("mraid://open?uri=%s", uri); implementation.dispatch_mraid_call(mraidCall, true); assertEquals(mockAdWebView.testString, "default"); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertFalse(mockAdDispatcher.adClicked); assertFalse(mockAdDispatcher.adClickedWithUrl); }
@Test public void testMRAIDCreateCalendarEventSuccess() { String event = "{\"id\":1}"; String mraidCall = String.format("mraid://createCalendarEvent?p=%s", event); implementation.dispatch_mraid_call(mraidCall, true); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertTrue(mockAdDispatcher.adClicked); }
@Test public void testMRAIDPlayVideoSuccess() { // Robolectric framework overrides intent errors for data type, so any uri will do String uri = "http://www.appnexus.com"; String mraidCall = String.format("mraid://playVideo?uri=%s", uri); implementation.dispatch_mraid_call(mraidCall, true); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertTrue(mockAdDispatcher.adClicked); }
@Test public void testANJAMDispatchAppEvent() { String eventName = "testEvent"; String eventData = "testData"; String anjamCall = String.format("anjam://DispatchAppEvent?event=%s&data=%s", eventName, eventData); ANJAMImplementation.handleUrl(mockAdWebView, anjamCall); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); System.out.println("Verifying app event callback"); assertTrue(mockAdDispatcher.appEventOccurred); System.out.println("App event received!"); System.out.println("Validating event name"); assertEquals(mockAdDispatcher.eventName, eventName); System.out.println("event name validated!"); System.out.println("Validating event data"); assertEquals(mockAdDispatcher.eventData, eventData); System.out.println("event data validated!"); }
@Test public void testMRAIDPlayVideoFail() { String uri = ""; String mraidCall = String.format("mraid://playVideo?uri=%s", uri); implementation.dispatch_mraid_call(mraidCall, true); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertFalse(mockAdDispatcher.adClicked); }
@Test public void testMRAIDCreateCalendarEventFailure() { String event = ""; String mraidCall = String.format("mraid://createCalendarEvent?p=%s", event); implementation.dispatch_mraid_call(mraidCall, true); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertFalse(mockAdDispatcher.adClicked); }
@Test public void testMRAIDOpenSuccessSDKBrowser() { String uri = "http://www.appnexus.com"; String mraidCall = String.format("mraid://open?uri=%s", uri); //Default ANClickThroughAction is ANClickThroughAction.OPEN_SDK_BROWSER implementation.dispatch_mraid_call(mraidCall, true); assertEquals(mockAdWebView.testString, uri); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertEquals(ANClickThroughAction.OPEN_SDK_BROWSER, mockAdWebView.adView.getClickThroughAction()); assertTrue(mockAdDispatcher.adClicked); assertFalse(mockAdDispatcher.adClickedWithUrl); }
private MediatedSSMAdViewController(AdView owner, UTAdRequester requester, SSMHTMLAdResponse currentAd) { this.caller_requester = new WeakReference<UTAdRequester>(requester); this.ssmHtmlAdResponse = currentAd; this.listener = owner.getAdDispatcher(); this.owner = owner; if (ssmHtmlAdResponse == null || !UTConstants.AD_TYPE_BANNER.equalsIgnoreCase(ssmHtmlAdResponse.getAdType())) { Clog.e(Clog.mediationLogTag, Clog.getString(R.string.mediated_no_ads)); onAdFailed(ResultCode.UNABLE_TO_FILL); } else { startTimeout(); markLatencyStart(); instantiateNewMediatedSSMAd(); } }
@Test public void testMRAIDExpandSuccess() { int width = -1; int height = -1; String useCustomClose = "false"; String allowOrientationChange = "true"; String forceOrientation = "none"; String mraidCall = String.format("mraid://expand?w=%d&h=%d&useCustomClose=%s&allow_orientation_change=%s&force_orientation=%s", width, height, useCustomClose, allowOrientationChange, forceOrientation); implementation.dispatch_mraid_call(mraidCall, true); assertEquals(mockAdWebView.width, width); assertEquals(mockAdWebView.height, height); assertEquals(mockAdWebView.customClose, false); assertEquals(mockAdWebView.allowOrientationChange, true); assertEquals(mockAdWebView.orientation, AdActivity.OrientationEnum.none); assertTrue(implementation.expanded); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertTrue(mockAdDispatcher.adExpanded); }
@Test public void testMRAIDResizeSuccess() { // set to -1 to get around screen size check int width = -1; int height = -1; int offsetX = 5; int offsetY = 5; String customClosePosition = "top-left"; String allowOffscreen = "true"; String mraidCall = String.format("mraid://resize?w=%d&h=%d&offset_x=%d&offset_y=%d&custom_close_position=%s&allow_offscreen=%s", width, height, offsetX, offsetY, customClosePosition, allowOffscreen); implementation.dispatch_mraid_call(mraidCall, true); assertEquals(mockAdWebView.width, width); assertEquals(mockAdWebView.height, height); assertEquals(mockAdWebView.offsetX, offsetX); assertEquals(mockAdWebView.offsetY, offsetY); assertEquals(mockAdWebView.customClosePosition, MRAIDImplementation.CUSTOM_CLOSE_POSITION.top_left); assertEquals(mockAdWebView.allowOffscreen, true); assertTrue(implementation.resized); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertTrue(mockAdDispatcher.adClicked); }
@Test public void testMRAIDOpenSuccessDeviceBrowser() { String uri = "http://www.appnexus.com"; String mraidCall = String.format("mraid://open?uri=%s", uri); mockAdWebView.adView.setClickThroughAction(ANClickThroughAction.OPEN_DEVICE_BROWSER); implementation.dispatch_mraid_call(mraidCall, true); assertEquals(mockAdWebView.testString, uri); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertEquals(ANClickThroughAction.OPEN_DEVICE_BROWSER, mockAdWebView.adView.getClickThroughAction()); assertTrue(mockAdDispatcher.adClicked); assertFalse(mockAdDispatcher.adClickedWithUrl); }
@Test public void testMRAIDOpenSuccessReturnUrl() { String uri = "http://www.appnexus.com"; String mraidCall = String.format("mraid://open?uri=%s", uri); mockAdWebView.adView.setClickThroughAction(ANClickThroughAction.RETURN_URL); implementation.dispatch_mraid_call(mraidCall, true); assertEquals(mockAdWebView.testString, uri); MockAdDispatcher mockAdDispatcher = (MockAdDispatcher) mockAdWebView.adView.getAdDispatcher(); assertEquals(ANClickThroughAction.RETURN_URL, mockAdWebView.adView.getClickThroughAction()); assertFalse(mockAdDispatcher.adClicked); assertTrue(mockAdDispatcher.adClickedWithUrl); }
owner.adView.getAdDispatcher().onAdCollapsed(); expandedWebView = null; } else if (owner.adView.isInterstitial()) { owner.adView.getAdDispatcher().onAdCollapsed(); Activity containerActivity = ((Activity) this.owner.getContextFromMutableContext()); if (containerActivity != null && !containerActivity.isFinishing()) {
private void handleCSMResponse(Ad ownerAd, CSMSDKAdResponse csmSdkAdResponse) { Clog.i(Clog.baseLogTag, "Mediation type is CSM, passing it to MediatedAdViewController."); if (csmSdkAdResponse.getAdType().equals(UTConstants.AD_TYPE_NATIVE)) { mediatedNativeAdController = MediatedNativeAdController.create(csmSdkAdResponse, AdViewRequestManager.this); } else { AdView owner = (AdView) ownerAd; if (owner.getMediaType().equals(MediaType.BANNER)) { controller = MediatedBannerAdViewController.create( (Activity) owner.getContext(), AdViewRequestManager.this, csmSdkAdResponse, owner.getAdDispatcher()); } else if (owner.getMediaType().equals(MediaType.INTERSTITIAL)) { controller = MediatedInterstitialAdViewController.create( (Activity) owner.getContext(), AdViewRequestManager.this, csmSdkAdResponse, owner.getAdDispatcher()); } else { Clog.e(Clog.baseLogTag, "MediaType type can not be identified."); continueWaterfall(ResultCode.INVALID_REQUEST); } } }