package org.wikipedia.analytics; import android.support.annotation.NonNull; import org.json.JSONObject; import org.wikipedia.WikipediaApp; import org.wikipedia.util.ReleaseUtil; // https://meta.wikimedia.org/wiki/Schema:WikipediaZeroUsage public class WikipediaZeroUsageFunnel extends TimedFunnel { private static final String SCHEMA_NAME = "WikipediaZeroUsage"; private static final int REV_ID = 14574251; private final String xcs; private final String net; public WikipediaZeroUsageFunnel(WikipediaApp app, String xcs, String net) { super(app, SCHEMA_NAME, REV_ID, ReleaseUtil.isProdRelease() ? Funnel.SAMPLE_LOG_100 : Funnel.SAMPLE_LOG_ALL); this.xcs = xcs; this.net = net; } public void logBannerClick() { log( "action", "bannerclick", "xcs", xcs, "net", net ); } public void logExtLink() { log( "action", "extlink", "xcs", xcs, "net", net ); } public void logExtLinkAuto() { log( "action", "extlink-auto", "xcs", xcs, "net", net ); } public void logExtLinkWarn() { log( "action", "extlink-warn", "xcs", xcs, "net", net ); } public void logExtLinkConf() { log( "action", "extlink-conf", "xcs", xcs, "net", net ); } public void logExtLinkBack() { log( "action", "extlink-back", "xcs", xcs, "net", net ); } // There's no way to log this in Android at present (see schema), but we can use it if // at some point in the future Android sends a signal when the user closes the app or // navigates to a different app. public void logExtLinkClose() { log( "action", "extlink-close", "xcs", xcs, "net", net ); } public void logExtLinkAlways() { log( "action", "extlink-always", "xcs", xcs, "net", net ); } public void logExtLinkMore() { log( "action", "extlink-more", "xcs", xcs, "net", net ); } @Override protected String getDurationFieldName() { return "time"; } @Override protected void preprocessSessionToken(@NonNull JSONObject eventData) { } @Override protected void preprocessAppInstallID(@NonNull JSONObject eventData) { } }