1761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang/******************************************************************************* 2761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * Copyright (C) 2013 Google Inc. 3761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * Licensed to The Android Open Source Project. 4761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * 5761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * Licensed under the Apache License, Version 2.0 (the "License"); 6761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * you may not use this file except in compliance with the License. 7761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * You may obtain a copy of the License at 8761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * 9761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * http://www.apache.org/licenses/LICENSE-2.0 10761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * 11761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * Unless required by applicable law or agreed to in writing, software 12761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * distributed under the License is distributed on an "AS IS" BASIS, 13761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * See the License for the specific language governing permissions and 15761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * limitations under the License. 16761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang *******************************************************************************/ 17761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 18761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huangpackage com.android.mail.analytics; 19761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 20761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huangimport android.app.Activity; 218cc0de897f4d4b5790a363684347eeae06088f45Andy Huangimport android.app.ActivityManager; 22761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 23761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang/** 24761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * Mail wrapper for analytics libraries. Libraries should implement {@link Tracker}, and app 25761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * configurations that want to enable analytics should call {@link #setTracker(Tracker)} as soon 26761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * as possible upon application start. 27761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * <p> 28761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * {@link #getInstance()} will always return an object, but if the app has not yet (or will not 29761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * ever) set its own tracker instance, method calls on that tracker will be stubbed out. 30761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang * 31761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang */ 32761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huangpublic final class Analytics { 33761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 34042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang public static final String EVENT_CATEGORY_MENU_ITEM = "menu_item"; 35761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 36042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang public static final int CD_INDEX_ACCOUNT_TYPE = 1; 37761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 38042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang public static final int CD_INDEX_ACCOUNT_COUNT = 2; 39761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 40042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang public static final int CD_INDEX_SENDER_IMAGES_ENABLED = 3; 41042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang 42042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang public static final int CD_INDEX_ATTACHMENT_PREVIEWS_ENABLED = 4; 43042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang 44042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang public static final int CD_INDEX_INBOX_TYPE = 5; 45042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang 46042a530b2296487fa5899a3e871214ac4a47e3d8Andy Huang public static final int CD_INDEX_INBOX_SECTIONS_ENABLED = 6; 47761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 484fe0af81874976a1995191321e35c844b2229811Andy Huang public static final int CD_INDEX_REPLY_ALL_SETTING = 7; 494fe0af81874976a1995191321e35c844b2229811Andy Huang 50761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang private static Tracker sInstance; 51761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 52761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang private Analytics() { 53761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang } 54761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 55761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public static Tracker getInstance() { 56761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang synchronized (Analytics.class) { 57761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang if (sInstance == null) { 58761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang sInstance = new StubTracker(); 59761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang } 60761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang } 61761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang return sInstance; 62761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang } 63761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 64761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public static void setTracker(Tracker t) { 65761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang synchronized (Analytics.class) { 66761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang sInstance = t; 67761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang } 68761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang } 69761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 708cc0de897f4d4b5790a363684347eeae06088f45Andy Huang public static boolean isLoggable() { 718cc0de897f4d4b5790a363684347eeae06088f45Andy Huang return !ActivityManager.isUserAMonkey() && !ActivityManager.isRunningInTestHarness(); 728cc0de897f4d4b5790a363684347eeae06088f45Andy Huang } 738cc0de897f4d4b5790a363684347eeae06088f45Andy Huang 74761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang private static final class StubTracker implements Tracker { 75761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 76761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang @Override 77761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public void activityStart(Activity a) {} 78761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 79761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang @Override 80761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public void activityStop(Activity a) {} 81761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 82761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang @Override 83761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public void sendEvent(String category, String action, String label, long value) {} 84761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 85761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang @Override 862b55549d4fbe25e91f673a0727fc89ff755d9327Andy Huang public void sendMenuItemEvent(String category, int itemResId, String label, long value) {} 872b55549d4fbe25e91f673a0727fc89ff755d9327Andy Huang 882b55549d4fbe25e91f673a0727fc89ff755d9327Andy Huang @Override 89761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public void sendView(String view) {} 90761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 91761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang @Override 92761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public void setCustomDimension(int index, String value) {} 93761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 94761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang @Override 95761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public void setCustomMetric(int index, Long value) {} 96761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 97761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang @Override 98761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang public void debugDispatchNow() {} 99761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 100761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang } 101761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang 102761522c1ac7a8fa05acde714f0e26fde47f3415fAndy Huang} 103