172db10a93c41fd3c53fdfefad52bad11d9728597Sunny Goyalpackage com.android.launcher3.testing; 2c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 3c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenimport android.content.Intent; 4141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohenimport android.graphics.Color; 5c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenimport android.os.Bundle; 6c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenimport android.view.Menu; 7c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenimport android.view.View; 8141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohenimport android.widget.FrameLayout; 972db10a93c41fd3c53fdfefad52bad11d9728597Sunny Goyal 1072db10a93c41fd3c53fdfefad52bad11d9728597Sunny Goyalimport com.android.launcher3.AppInfo; 1172db10a93c41fd3c53fdfefad52bad11d9728597Sunny Goyalimport com.android.launcher3.Launcher; 1272db10a93c41fd3c53fdfefad52bad11d9728597Sunny Goyalimport com.android.launcher3.LauncherCallbacks; 136b1c73f50a99a215c923aa0caca8e63c593a4eb2Winson Chungimport com.android.launcher3.util.ComponentKey; 148ff9e1d6790d64eb5f8ad9e9721e607978b50583Mario Bertschlerimport com.android.launcher3.util.ComponentKeyMapper; 15c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 16c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenimport java.io.FileDescriptor; 17c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenimport java.io.PrintWriter; 18c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenimport java.util.ArrayList; 194ac30068732c7216288999d255a823adb7ca7c12Winson Chungimport java.util.List; 20c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 21c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen/** 22c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen * This class represents a very trivial LauncherExtension. It primarily serves as a simple 23c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen * class to exercise the LauncherOverlay interface. 24c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen */ 25c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohenpublic class LauncherExtension extends Launcher { 26c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 27c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen //------ Activity methods -------// 28c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 29c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onCreate(Bundle savedInstanceState) { 30c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen setLauncherCallbacks(new LauncherExtensionCallbacks()); 31c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen super.onCreate(savedInstanceState); 32c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 33c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 34c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public class LauncherExtensionCallbacks implements LauncherCallbacks { 35c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 36c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 37c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void preOnCreate() { 38c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 39c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 40c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 41c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onCreate(Bundle savedInstanceState) { 42c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 43c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 44c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 45c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void preOnResume() { 46c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 47c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 48c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 49c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onResume() { 50c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 51c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 52c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 53c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onStart() { 54c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 55c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 56c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 57c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onStop() { 58c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 59c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 60c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 61c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onPause() { 62c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 63c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 64c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 65c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onDestroy() { 66c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 67c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 68c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 69c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onSaveInstanceState(Bundle outState) { 70c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 71c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 72c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 73c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onPostCreate(Bundle savedInstanceState) { 74c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 75c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 76c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 77c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onNewIntent(Intent intent) { 78c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 79c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 80c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 81c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onActivityResult(int requestCode, int resultCode, Intent data) { 82c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 83c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 84c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 853a43ed61cba0dd45cf085f41c1632cfbc82a8adcDave Hawkey public void onRequestPermissionsResult(int requestCode, String[] permissions, 863a43ed61cba0dd45cf085f41c1632cfbc82a8adcDave Hawkey int[] grantResults) { 873a43ed61cba0dd45cf085f41c1632cfbc82a8adcDave Hawkey } 883a43ed61cba0dd45cf085f41c1632cfbc82a8adcDave Hawkey 893a43ed61cba0dd45cf085f41c1632cfbc82a8adcDave Hawkey @Override 90c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onWindowFocusChanged(boolean hasFocus) { 91c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 92c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 93c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 94c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public boolean onPrepareOptionsMenu(Menu menu) { 95c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen return false; 96c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 97c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 98c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 99c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void dump(String prefix, FileDescriptor fd, PrintWriter w, String[] args) { 100c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 101c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 102c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 103c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onHomeIntent() { 104c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 105c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 106c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 107c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public boolean handleBackPressed() { 108c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen return false; 109c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 110c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 111c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 11267c3086163593db47e57b8cf4fcb034334374000Robert Kozikowski public void onTrimMemory(int level) { 11367c3086163593db47e57b8cf4fcb034334374000Robert Kozikowski } 11467c3086163593db47e57b8cf4fcb034334374000Robert Kozikowski 11567c3086163593db47e57b8cf4fcb034334374000Robert Kozikowski @Override 116c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onLauncherProviderChange() { 117c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 118c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 119c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 120c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void finishBindingItems(boolean upgradePath) { 121c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 122c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 123c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 124c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void bindAllApplications(ArrayList<AppInfo> apps) { 125c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 126c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 127c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 128c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onWorkspaceLockedChanged() { 129c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 130c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 131c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 132c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onInteractionBegin() { 133c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 134c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 135c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 136c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void onInteractionEnd() { 137c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 138c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 139c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 140c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public boolean startSearch(String initialQuery, boolean selectInitialQuery, 1416f28e71e94aed69c71415ac5a5334fd0bb6c9ce5Sunny Goyal Bundle appSearchData) { 142c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen return false; 143c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 144c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 145141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen CustomContentCallbacks mCustomContentCallbacks = new CustomContentCallbacks() { 146141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen 147141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen // Custom content is completely shown. {@code fromResume} indicates whether this was caused 148141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen // by a onResume or by scrolling otherwise. 149141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen public void onShow(boolean fromResume) { 150141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen } 151141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen 152141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen // Custom content is completely hidden 153141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen public void onHide() { 154141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen } 155141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen 156141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen // Custom content scroll progress changed. From 0 (not showing) to 1 (fully showing). 157141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen public void onScrollProgressChanged(float progress) { 158141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen 159141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen } 160141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen 161141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen // Indicates whether the user is allowed to scroll away from the custom content. 162141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen public boolean isScrollingAllowed() { 163141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen return true; 164141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen } 165141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen 166141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen }; 167141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen 168c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 169c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public boolean hasCustomContentToLeft() { 170141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen return true; 171c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 172c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 173c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 174c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public void populateCustomContentContainer() { 175141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen FrameLayout customContent = new FrameLayout(LauncherExtension.this); 176141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen customContent.setBackgroundColor(Color.GRAY); 177141b20e0b31a241b4193ae650421a396e6966cbbAdam Cohen addToCustomContentPage(customContent, mCustomContentCallbacks, ""); 178c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 179c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 180c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 181c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public View getQsbBar() { 18232554d1c6169df944f651846c64096f8bb57fb31Sunny Goyal return null; 183c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 184c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 185c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 186775455c4a8266655bf43b943e969d42ac32609ecTony Wickham public Bundle getAdditionalSearchWidgetOptions() { 187775455c4a8266655bf43b943e969d42ac32609ecTony Wickham return new Bundle(); 188775455c4a8266655bf43b943e969d42ac32609ecTony Wickham } 189775455c4a8266655bf43b943e969d42ac32609ecTony Wickham 190775455c4a8266655bf43b943e969d42ac32609ecTony Wickham @Override 191c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public boolean shouldMoveToDefaultScreenOnHomeIntent() { 192c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen return true; 193c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 194c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 195c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 196c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen public boolean hasSettings() { 197c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen return false; 198c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 199c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen 200c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen @Override 2018ff9e1d6790d64eb5f8ad9e9721e607978b50583Mario Bertschler public List<ComponentKeyMapper<AppInfo>> getPredictedApps() { 20211b644d6e1661e5365f47772b1e6741719f73506Adam Cohen // To debug app predictions, enable AlphabeticalAppsList#DEBUG_PREDICTIONS 20311b644d6e1661e5365f47772b1e6741719f73506Adam Cohen return new ArrayList<>(); 2044ac30068732c7216288999d255a823adb7ca7c12Winson Chung } 2054ac30068732c7216288999d255a823adb7ca7c12Winson Chung 2064ac30068732c7216288999d255a823adb7ca7c12Winson Chung @Override 20755616cd363202eccf7a9f9a5af00d12997c24b19Tony Wickham public int getSearchBarHeight() { 20855616cd363202eccf7a9f9a5af00d12997c24b19Tony Wickham return SEARCH_BAR_HEIGHT_NORMAL; 20955616cd363202eccf7a9f9a5af00d12997c24b19Tony Wickham } 21055616cd363202eccf7a9f9a5af00d12997c24b19Tony Wickham 21155616cd363202eccf7a9f9a5af00d12997c24b19Tony Wickham @Override 212c86df470ab360a6e3f7edfd4b9cadcc5c31734f8Sunny Goyal public void onAttachedToWindow() { 213c86df470ab360a6e3f7edfd4b9cadcc5c31734f8Sunny Goyal } 214c86df470ab360a6e3f7edfd4b9cadcc5c31734f8Sunny Goyal 215c86df470ab360a6e3f7edfd4b9cadcc5c31734f8Sunny Goyal @Override 216c86df470ab360a6e3f7edfd4b9cadcc5c31734f8Sunny Goyal public void onDetachedFromWindow() { 217534058492ff7d9a8a75b0fe709bddb6c3f6dcd79Sunny Goyal } 218c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen } 219c2d6e897dbcb96b7b629e42002966368fbda2f95Adam Cohen} 220