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