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