@Override void close() { super.close(); firstPartImplementation.close(); } }
private void handleSSMServerResponse() { if (hasSucceeded || hasFailed) return; cancelTimeout(); hasSucceeded = true; fireResponseURL(ssmHtmlAdResponse, ResultCode.SUCCESS); UTAdRequester requester = this.caller_requester.get(); if (requester != null) { final AdWebView output = new AdWebView(owner,requester); output.loadAd(ssmHtmlAdResponse); } }
/** * ViewTreeObserver GlobalLayout Listener */ @Override public void onGlobalLayout() { checkPosition(); }
protected void injectJavaScript(String url) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { evaluateJavascript(url, null); } else { loadUrl(url); } } catch (Exception exception) { // We can't do anything much here if there is an exception ignoring. // This is to avoid crash of users app gracefully. Clog.e(Clog.baseLogTag, "AdWebView.injectJavaScript -- Caught EXCEPTION...", exception); } }
public void loadAd(BaseAdResponse ad) { try { if (ad == null) { fail(); return; setCreativeHeight(ad.getHeight()); setCreativeWidth(ad.getWidth()); fail(); return; parseAdResponseExtras(ad.getExtras()); adResponseData = ad; isVideoAd = (UTConstants.AD_TYPE_VIDEO.equalsIgnoreCase(adResponseData.getAdType())); this.setLayoutParams(resize); this.loadUrl(Settings.getVideoHtmlPage()); } else { html = preLoadContent(html); html = prependRawResources(html); html = prependViewPort(html); html = omidAdSession.prependOMIDJSToHTML(html); this.loadDataWithBaseURL(Settings.getBaseUrl(), html, "text/html", "UTF-8", null); fail();
void close() { if (expanded || resized || isMRAIDTwoPartExpanded) { AdView.LayoutParams lp = new AdView.LayoutParams( owner.getLayoutParams()); lp.height = default_height; lp.width = default_width; lp.gravity = Gravity.CENTER; owner.setLayoutParams(lp); owner.close(); owner.injectJavaScript("javascript:window.mraid.util.stateChangeEvent('default');"); Activity a = ((Activity) this.owner.getContextFromMutableContext()); if (a != null) a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); } else if (owner.adView.isInterstitial()) { owner.adView.getAdDispatcher().onAdCollapsed(); Activity containerActivity = ((Activity) this.owner.getContextFromMutableContext()); if (containerActivity != null && !containerActivity.isFinishing()) { containerActivity.finish(); owner.hide();
if (checkForApp(url)) { return; out = new RedirectWebView(this.getContext()); out.loadUrl(url); out.setVisibility(View.GONE); progressDialog = new ProgressDialog(this.getContextFromMutableContext()); progressDialog.setCancelable(true); progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { progressDialog.setMessage(getContext().getResources().getString(R.string.loading)); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.show(); out = new WebView(new MutableContextWrapper(getContext())); WebviewUtil.setWebViewSettings(out); out.loadUrl(url); openInAppBrowser(out); Clog.d(Clog.baseLogTag, Clog.getString(R.string.opening_native)); openNativeIntent(url); triggerBrowserLaunchEvent();
void webViewFinishedLoading(AdWebView view, String startingState) { // Fire the ready event only once if (!readyFired) { String adType = owner.adView.isBanner() ? "inline" : "interstitial"; isMRAIDTwoPartExpanded = startingState.equals( MRAID_INIT_STATE_STRINGS[MRAID_INIT_STATE.STARTING_EXPANDED.ordinal()]); owner.isFullScreen = isMRAIDTwoPartExpanded; view.injectJavaScript("javascript:window.mraid.util.setPlacementType('" + adType + "')"); if (!isMRAIDTwoPartExpanded) { setSupportsValues(view); setScreenSize(); setMaxSize(); setDefaultPosition(); } owner.checkPosition(); //set CURRENT position, in addition to default view.injectJavaScript("javascript:window.mraid.util.stateChangeEvent('" + startingState + "')"); view.injectJavaScript("javascript:window.mraid.util.readyEvent();"); // Store width and height for close() default_width = owner.getLayoutParams().width; default_height = owner.getLayoutParams().height; if (owner.adView.getMediaType().equals(MediaType.BANNER)) { default_gravity = ((FrameLayout.LayoutParams) owner.getLayoutParams()).gravity; } readyFired = true; onViewableChange(owner.isViewable()); } }
private static void callRecordEvent(AdWebView webView, Uri uri) { String urlParam = uri.getQueryParameter("url"); if ((urlParam == null) || (!urlParam.startsWith("http"))) { return; } // Create a invisible webview to fire the url WebView recordEventWebView = new WebView(webView.getContext()); recordEventWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); Clog.d(Clog.baseLogTag, "RecordEvent completed loading: " + url); CookieSyncManager csm = CookieSyncManager.getInstance(); if (csm != null) csm.sync(); } }); recordEventWebView.loadUrl(urlParam); recordEventWebView.setVisibility(View.GONE); webView.addView(recordEventWebView); }
owner.expand(width, height, useCustomClose, this, allowOrientationChange, forceOrientation); this.owner.injectJavaScript("javascript:window.mraid.util.stateChangeEvent('expanded');"); expanded = true;
@Override public void destroy() { AdWebView.this.destroy(); } };
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 boolean failed() { return super.failed(); }
@Override public void onDestroy() { destroy(); }
@Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { AdWebView.this.fail(); Clog.w(Clog.httpRespLogTag, Clog.getString(R.string.webclient_error, error.getPrimaryError(), error.toString())); } }
protected void loadAdFromVAST(String VASTXML,int width,int height) { // load an ad directly from VASTXML loadedOffscreen = true; AdWebView output = new AdWebView(this, null); RTBVASTAdResponse response = new RTBVASTAdResponse(width,height,AdType.VIDEO.toString(), null,null,"1"); response.setAdContent(VASTXML); response.setContentSource(UTConstants.RTB); response.addToExtras(UTConstants.EXTRAS_KEY_MRAID, true); output.loadAd(response); display(output); }
@Override void close() { super.close(); }
/** * ViewTreeObserver Scroll Listener */ @Override public void onScrollChanged() { checkPosition(); }
@Override public void destroy() { // clean up webView if (webView != null) { ViewUtil.removeChildFromParent(webView); webView.destroy(); } // cleanup adView if (adView != null) { adView.setAdImplementation(null); } }
protected void loadAdFromHtml(String html, int width, int height) { // load an ad directly from html loadedOffscreen = true; AdWebView output = new AdWebView(this, null); RTBHTMLAdResponse response = new RTBHTMLAdResponse(width, height, getMediaType().toString(), null, getCreativeId()); response.setAdContent(html); output.loadAd(response); display(output); }