12c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri/* 22c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * Copyright (C) 2015 The Android Open Source Project 32c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * 42c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * Licensed under the Apache License, Version 2.0 (the "License"); 52c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * you may not use this file except in compliance with the License. 62c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * You may obtain a copy of the License at 72c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * 82c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * http://www.apache.org/licenses/LICENSE-2.0 92c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * 102c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * Unless required by applicable law or agreed to in writing, software 112c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * distributed under the License is distributed on an "AS IS" BASIS, 122c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * See the License for the specific language governing permissions and 142c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * limitations under the License. 152c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri */ 162c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 172c7b461077d83986c32dea89da9b2458a633f59fClara Bayarripackage com.android.internal.app; 182c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 192c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.test.ActivityInstrumentationTestCase2; 202c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.test.UiThreadTest; 21e097c097d6775bd58a725a6946fb263a4725be55Clara Bayarriimport android.test.suitebuilder.annotation.SmallTest; 222c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.view.ActionMode; 232c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.view.Menu; 242c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.view.MenuItem; 252c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 262c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri/** 272c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * Tests for {@link WindowDecorActionBar}. 282c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri */ 29e097c097d6775bd58a725a6946fb263a4725be55Clara Bayarri@SmallTest 302c7b461077d83986c32dea89da9b2458a633f59fClara Bayarripublic class WindowDecorActionBarTest 312c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri extends ActivityInstrumentationTestCase2<WindowDecorActionBarTestActivity> { 322c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private WindowDecorActionBar mWindowDecorActionBar; 332c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private MockActionModeCallback mCallback; 342c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 352c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public WindowDecorActionBarTest() { 362c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri super(WindowDecorActionBarTestActivity.class); 372c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 382c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 392c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 402c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri protected void setUp() throws Exception { 412c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri super.setUp(); 422c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mWindowDecorActionBar = (WindowDecorActionBar) getActivity().getActionBar(); 432c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mCallback = new MockActionModeCallback(); 442c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 452c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 462c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @UiThreadTest 472c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void testStartActionMode() { 482c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode = mWindowDecorActionBar.startActionMode(mCallback); 492c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 502c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNotNull(mode); 512c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertTrue(mCallback.mIsCreateActionModeCalled); 522c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 532c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 542c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @UiThreadTest 552c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void testStartActionModeWhenCreateReturnsFalse() { 562c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mCallback.mShouldCreateActionMode = false; 572c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 582c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode = mWindowDecorActionBar.startActionMode(mCallback); 592c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 602c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNull(mode); 612c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertTrue(mCallback.mIsCreateActionModeCalled); 622c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 632c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 642c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @UiThreadTest 652c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void testStartActionModeFinishesPreviousMode() { 662c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode1 = mWindowDecorActionBar.startActionMode(mCallback); 672c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode2 = mWindowDecorActionBar.startActionMode(new MockActionModeCallback()); 682c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 692c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNotNull(mode1); 702c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNotNull(mode2); 712c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertTrue(mCallback.mIsDestroyActionModeCalled); 722c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 732c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 742c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private static final class MockActionModeCallback implements ActionMode.Callback { 752c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private boolean mShouldCreateActionMode = true; 762c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private boolean mIsCreateActionModeCalled = false; 772c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private boolean mIsDestroyActionModeCalled = false; 782c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 792c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 802c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 812c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri return true; 822c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 832c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 842c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 852c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void onDestroyActionMode(ActionMode mode) { 862c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mIsDestroyActionModeCalled = true; 872c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 882c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 892c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 902c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public boolean onCreateActionMode(ActionMode mode, Menu menu) { 912c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mIsCreateActionModeCalled = true; 922c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri return mShouldCreateActionMode; 932c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 942c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 952c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 962c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 972c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri return false; 982c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 992c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 1002c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri} 101