jenkins-bot has submitted this change and it was merged.

Change subject: Add event logging funnel for navigation menu interaction
......................................................................


Add event logging funnel for navigation menu interaction

Adds logging per the schema at
https://meta.wikimedia.org/wiki/Schema:MobileWikiAppNavMenu.

Logs opening of the nav menu, selection of an item, and cancellation,
i.e., the closing of the drawer without any item having been selected.

Bug: T104623
Change-Id: I9cf04cf9c2d258fc8b561d1dca99de40e22c78ab
---
A wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java
M wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
3 files changed, 96 insertions(+), 0 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java 
b/wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java
new file mode 100644
index 0000000..0cb40ef
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/analytics/NavMenuFunnel.java
@@ -0,0 +1,67 @@
+package org.wikipedia.analytics;
+
+import org.wikipedia.WikipediaApp;
+
+public class NavMenuFunnel extends Funnel {
+    private static final String SCHEMA_NAME = "MobileWikiAppNavMenu";
+    private static final int REV_ID = 12732211;
+
+    private static final String NAV_MENU_TODAY = "Today";
+    private static final String NAV_MENU_HISTORY = "Recent";
+    private static final String NAV_MENU_SAVED_PAGES = "SavedPages";
+    private static final String NAV_MENU_NEARBY = "Nearby";
+    private static final String NAV_MENU_MORE = "More";
+    private static final String NAV_MENU_LOGIN = "Login";
+    private static final String NAV_MENU_RANDOM = "Random";
+
+    public NavMenuFunnel() {
+        super(WikipediaApp.getInstance(), SCHEMA_NAME, REV_ID, 
Funnel.SAMPLE_LOG_100);
+    }
+
+    public void logToday() {
+        logSelect(NAV_MENU_TODAY);
+    }
+
+    public void logHistory() {
+        logSelect(NAV_MENU_HISTORY);
+    }
+
+    public void logSavedPages() {
+        logSelect(NAV_MENU_SAVED_PAGES);
+    }
+
+    public void logNearby() {
+        logSelect(NAV_MENU_NEARBY);
+    }
+
+    public void logMore() {
+        logSelect(NAV_MENU_MORE);
+    }
+
+    public void logLogin() {
+        logSelect(NAV_MENU_LOGIN);
+    }
+
+    public void logRandom() {
+        logSelect(NAV_MENU_RANDOM);
+    }
+
+    public void logOpen() {
+        log(
+                "action", "open"
+        );
+    }
+
+    public void logCancel() {
+        log(
+                "action", "cancel"
+        );
+    }
+
+    private void logSelect(String menuItem) {
+        log(
+                "action", "select",
+                "menuItem", menuItem
+        );
+    }
+}
diff --git a/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java 
b/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java
index 3d7533b..2ae65db 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/NavDrawerHelper.java
@@ -12,6 +12,7 @@
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.analytics.LoginFunnel;
+import org.wikipedia.analytics.NavMenuFunnel;
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.history.HistoryFragment;
 import org.wikipedia.login.LoginActivity;
@@ -34,8 +35,10 @@
     private MenuItem usernameContainer;
     private MenuItem loginContainer;
     private MenuItem[] loggedInOnyActionViews = new 
MenuItem[NAV_DRAWER_ACTION_ITEMS_LOGGED_IN_ONLY.length];
+    private NavMenuFunnel funnel;
 
     public NavDrawerHelper(@NonNull PageActivity page) {
+        this.funnel = new NavMenuFunnel();
         this.page = page;
         page.getSupportFragmentManager().addOnBackStackChangedListener(new 
FragmentManager.OnBackStackChangedListener() {
             @Override
@@ -43,6 +46,10 @@
                 
updateItemSelection(NavDrawerHelper.this.page.getTopFragment());
             }
         });
+    }
+
+    public NavMenuFunnel getFunnel() {
+        return funnel;
     }
 
     public void setupDynamicNavDrawerItems() {
@@ -66,30 +73,38 @@
                 switch (menuItem.getItemId()) {
                     case R.id.nav_item_today:
                         page.displayMainPageInCurrentTab();
+                        funnel.logToday();
                         break;
                     case R.id.nav_item_history:
                         page.pushFragment(new HistoryFragment());
+                        funnel.logHistory();
                         break;
                     case R.id.nav_item_saved_pages:
                         page.pushFragment(new SavedPagesFragment());
+                        funnel.logSavedPages();
                         break;
                     case R.id.nav_item_nearby:
                         page.pushFragment(new NearbyFragment());
+                        funnel.logNearby();
                         break;
                     case R.id.nav_item_more:
                         launchSettingsActivity();
+                        funnel.logMore();
                         break;
                     case R.id.nav_item_login:
                         launchLoginActivity();
+                        funnel.logLogin();
                         break;
                     case R.id.nav_item_random:
                         page.getRandomHandler().doVisitRandomArticle();
+                        funnel.logRandom();
                         break;
                     default:
                         return false;
                 }
                 clearItemHighlighting();
                 menuItem.setChecked(true);
+                page.setNavItemSelected(true);
                 return true;
             }
         };
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index e5f2c87..175b4ca 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -120,6 +120,7 @@
     private ThemeChooserDialog themeChooser;
     private RandomHandler randomHandler;
     private NavDrawerHelper navDrawerHelper;
+    private boolean navItemSelected;
 
     public View getContentView() {
         return fragmentContainerView;
@@ -174,6 +175,14 @@
         } else {
             return null;
         }
+    }
+
+    public void setNavItemSelected(boolean wasSelected) {
+        navItemSelected = wasSelected;
+    }
+
+    private boolean wasNavItemSelected() {
+        return navItemSelected;
     }
 
     @Override
@@ -326,6 +335,10 @@
             super.onDrawerClosed(view);
             // if we want to change the title upon closing:
             //getSupportActionBar().setTitle("");
+            if (!wasNavItemSelected()) {
+                navDrawerHelper.getFunnel().logCancel();
+            }
+            setNavItemSelected(false);
         }
 
         @Override
@@ -341,6 +354,7 @@
             if (isCabOpen()) {
                 currentActionMode.finish();
             }
+            navDrawerHelper.getFunnel().logOpen();
         }
 
         private boolean oncePerSlideLock = false;

-- 
To view, visit https://gerrit.wikimedia.org/r/228012
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I9cf04cf9c2d258fc8b561d1dca99de40e22c78ab
Gerrit-PatchSet: 6
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Mholloway <[email protected]>
Gerrit-Reviewer: Niedzielski <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to