• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.support.v7.testutils;
18 
19 import android.os.Bundle;
20 import android.support.annotation.NonNull;
21 import android.support.annotation.Nullable;
22 import android.support.v7.app.AppCompatActivity;
23 import android.support.v7.app.AppCompatCallback;
24 import android.support.v7.appcompat.test.R;
25 import android.support.v7.view.ActionMode;
26 import android.view.KeyEvent;
27 import android.view.Menu;
28 import android.view.MenuItem;
29 import android.view.WindowManager;
30 
31 public abstract class BaseTestActivity extends AppCompatActivity {
32 
33     private Menu mMenu;
34 
35     private KeyEvent mOnKeyDownEvent;
36     private KeyEvent mOnKeyUpEvent;
37     private KeyEvent mOnKeyShortcutEvent;
38 
39     private MenuItem mOptionsItemSelected;
40 
41     private boolean mOnMenuOpenedCalled;
42     private boolean mOnPanelClosedCalled;
43 
44     private boolean mShouldPopulateOptionsMenu = true;
45 
46     private boolean mOnBackPressedCalled;
47     private boolean mDestroyed;
48 
49     private AppCompatCallback mAppCompatCallback;
50 
51     @Override
onCreate(Bundle savedInstanceState)52     protected void onCreate(Bundle savedInstanceState) {
53         super.onCreate(savedInstanceState);
54         overridePendingTransition(0, 0);
55         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
56         final int contentView = getContentViewLayoutResId();
57         if (contentView > 0) {
58             setContentView(contentView);
59         }
60         onContentViewSet();
61         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
62     }
63 
64     @Override
finish()65     public void finish() {
66         super.finish();
67         overridePendingTransition(0, 0);
68     }
69 
getContentViewLayoutResId()70     protected abstract int getContentViewLayoutResId();
71 
onContentViewSet()72     protected void onContentViewSet() {
73     }
74 
75     @Override
onOptionsItemSelected(MenuItem item)76     public boolean onOptionsItemSelected(MenuItem item) {
77         mOptionsItemSelected = item;
78         return super.onOptionsItemSelected(item);
79     }
80 
81     @Override
onMenuOpened(int featureId, Menu menu)82     public boolean onMenuOpened(int featureId, Menu menu) {
83         mOnMenuOpenedCalled = true;
84         return super.onMenuOpened(featureId, menu);
85     }
86 
87     @Override
onPanelClosed(int featureId, Menu menu)88     public void onPanelClosed(int featureId, Menu menu) {
89         mOnPanelClosedCalled = true;
90         super.onPanelClosed(featureId, menu);
91     }
92 
93     @Override
onKeyDown(int keyCode, KeyEvent event)94     public boolean onKeyDown(int keyCode, KeyEvent event) {
95         mOnKeyDownEvent = event;
96         return super.onKeyDown(keyCode, event);
97     }
98 
99     @Override
onKeyUp(int keyCode, KeyEvent event)100     public boolean onKeyUp(int keyCode, KeyEvent event) {
101         mOnKeyUpEvent = event;
102         return super.onKeyUp(keyCode, event);
103     }
104 
105     @Override
onKeyShortcut(int keyCode, KeyEvent event)106     public boolean onKeyShortcut(int keyCode, KeyEvent event) {
107         mOnKeyShortcutEvent = event;
108         return super.onKeyShortcut(keyCode, event);
109     }
110 
getInvokedKeyShortcutEvent()111     public KeyEvent getInvokedKeyShortcutEvent() {
112         return mOnKeyShortcutEvent;
113     }
114 
wasOnMenuOpenedCalled()115     public boolean wasOnMenuOpenedCalled() {
116         return mOnMenuOpenedCalled;
117     }
118 
wasOnPanelClosedCalled()119     public boolean wasOnPanelClosedCalled() {
120         return mOnPanelClosedCalled;
121     }
122 
getInvokedKeyDownEvent()123     public KeyEvent getInvokedKeyDownEvent() {
124         return mOnKeyDownEvent;
125     }
126 
getInvokedKeyUpEvent()127     public KeyEvent getInvokedKeyUpEvent() {
128         return mOnKeyUpEvent;
129     }
130 
131     @Override
onCreateOptionsMenu(Menu menu)132     public boolean onCreateOptionsMenu(Menu menu) {
133         mMenu = menu;
134         if (mShouldPopulateOptionsMenu) {
135             getMenuInflater().inflate(R.menu.sample_actions, menu);
136             return true;
137         } else {
138             menu.clear();
139             return super.onCreateOptionsMenu(menu);
140         }
141     }
142 
getOptionsItemSelected()143     public MenuItem getOptionsItemSelected() {
144         return mOptionsItemSelected;
145     }
146 
reset()147     public void reset() {
148         mOnKeyUpEvent = null;
149         mOnKeyDownEvent = null;
150         mOnKeyShortcutEvent = null;
151         mOnMenuOpenedCalled = false;
152         mOnPanelClosedCalled = false;
153         mMenu = null;
154         mOptionsItemSelected = null;
155     }
156 
setShouldPopulateOptionsMenu(boolean populate)157     public void setShouldPopulateOptionsMenu(boolean populate) {
158         mShouldPopulateOptionsMenu = populate;
159         if (mMenu != null) {
160             supportInvalidateOptionsMenu();
161         }
162     }
163 
164     @Override
onDestroy()165     protected void onDestroy() {
166         super.onDestroy();
167         mDestroyed = true;
168     }
169 
170     @Override
onBackPressed()171     public void onBackPressed() {
172         super.onBackPressed();
173         mOnBackPressedCalled = true;
174     }
175 
wasOnBackPressedCalled()176     public boolean wasOnBackPressedCalled() {
177         return mOnBackPressedCalled;
178     }
179 
getMenu()180     public Menu getMenu() {
181         return mMenu;
182     }
183 
184     @Override
isDestroyed()185     public boolean isDestroyed() {
186         return mDestroyed;
187     }
188 
189     @Override
onSupportActionModeStarted(@onNull ActionMode mode)190     public void onSupportActionModeStarted(@NonNull ActionMode mode) {
191         if (mAppCompatCallback != null) {
192             mAppCompatCallback.onSupportActionModeStarted(mode);
193         }
194     }
195 
196     @Override
onSupportActionModeFinished(@onNull ActionMode mode)197     public void onSupportActionModeFinished(@NonNull ActionMode mode) {
198         if (mAppCompatCallback != null) {
199             mAppCompatCallback.onSupportActionModeFinished(mode);
200         }
201     }
202 
203     @Nullable
204     @Override
onWindowStartingSupportActionMode(@onNull ActionMode.Callback callback)205     public ActionMode onWindowStartingSupportActionMode(@NonNull ActionMode.Callback callback) {
206         if (mAppCompatCallback != null) {
207             return mAppCompatCallback.onWindowStartingSupportActionMode(callback);
208         }
209         return super.onWindowStartingSupportActionMode(callback);
210     }
211 
setAppCompatCallback(AppCompatCallback callback)212     public void setAppCompatCallback(AppCompatCallback callback) {
213         mAppCompatCallback = callback;
214     }
215 }
216