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; 212c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.view.ActionMode; 222c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.view.Menu; 232c7b461077d83986c32dea89da9b2458a633f59fClara Bayarriimport android.view.MenuItem; 242c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 252c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri/** 262c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri * Tests for {@link WindowDecorActionBar}. 272c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri */ 282c7b461077d83986c32dea89da9b2458a633f59fClara Bayarripublic class WindowDecorActionBarTest 292c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri extends ActivityInstrumentationTestCase2<WindowDecorActionBarTestActivity> { 302c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private WindowDecorActionBar mWindowDecorActionBar; 312c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private MockActionModeCallback mCallback; 322c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 332c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public WindowDecorActionBarTest() { 342c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri super(WindowDecorActionBarTestActivity.class); 352c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 362c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 372c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 382c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri protected void setUp() throws Exception { 392c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri super.setUp(); 402c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mWindowDecorActionBar = (WindowDecorActionBar) getActivity().getActionBar(); 412c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mCallback = new MockActionModeCallback(); 422c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 432c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 442c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @UiThreadTest 452c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void testStartActionMode() { 462c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode = mWindowDecorActionBar.startActionMode(mCallback); 472c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 482c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNotNull(mode); 492c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertTrue(mCallback.mIsCreateActionModeCalled); 502c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 512c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 522c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @UiThreadTest 532c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void testStartActionModeWhenCreateReturnsFalse() { 542c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mCallback.mShouldCreateActionMode = false; 552c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 562c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode = mWindowDecorActionBar.startActionMode(mCallback); 572c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 582c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNull(mode); 592c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertTrue(mCallback.mIsCreateActionModeCalled); 602c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 612c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 622c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @UiThreadTest 632c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void testStartActionModeFinishesPreviousMode() { 642c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode1 = mWindowDecorActionBar.startActionMode(mCallback); 652c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri ActionMode mode2 = mWindowDecorActionBar.startActionMode(new MockActionModeCallback()); 662c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 672c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNotNull(mode1); 682c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertNotNull(mode2); 692c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri assertTrue(mCallback.mIsDestroyActionModeCalled); 702c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 712c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 722c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private static final class MockActionModeCallback implements ActionMode.Callback { 732c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private boolean mShouldCreateActionMode = true; 742c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private boolean mIsCreateActionModeCalled = false; 752c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri private boolean mIsDestroyActionModeCalled = false; 762c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 772c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 782c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 792c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri return true; 802c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 812c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 822c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 832c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public void onDestroyActionMode(ActionMode mode) { 842c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mIsDestroyActionModeCalled = true; 852c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 862c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 872c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 882c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public boolean onCreateActionMode(ActionMode mode, Menu menu) { 892c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri mIsCreateActionModeCalled = true; 902c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri return mShouldCreateActionMode; 912c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 922c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri 932c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri @Override 942c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 952c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri return false; 962c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 972c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri } 982c7b461077d83986c32dea89da9b2458a633f59fClara Bayarri} 99