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