Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1222)

Unified Diff: chrome/android/junit/src/org/chromium/chrome/browser/ChromeActionModeCallbackTest.java

Issue 2949903002: Fix search engine promo from web search action mode in CCTs. (Closed)
Patch Set: Clear statics in junit code Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/java_sources.gni ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/junit/src/org/chromium/chrome/browser/ChromeActionModeCallbackTest.java
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/ChromeActionModeCallbackTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/ChromeActionModeCallbackTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..96e4dfef7cf59a019f4d6988991e544aa464f139
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/ChromeActionModeCallbackTest.java
@@ -0,0 +1,110 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser;
+
+import android.app.Activity;
+import android.view.ActionMode;
+import android.view.Menu;
+import android.view.MenuItem;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import org.chromium.base.Callback;
+import org.chromium.base.ContextUtils;
+import org.chromium.base.metrics.RecordUserAction;
+import org.chromium.chrome.browser.firstrun.FirstRunStatus;
+import org.chromium.chrome.browser.locale.LocaleManager;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.content.R;
+import org.chromium.content_public.browser.ActionModeCallbackHelper;
+import org.chromium.testing.local.LocalRobolectricTestRunner;
+
+/**
+ * Unit tests for the {@link ChromeActionModeCallback}.
+ */
+@RunWith(LocalRobolectricTestRunner.class)
+@Config(manifest = Config.NONE)
+public class ChromeActionModeCallbackTest {
+ @Mock
+ private Tab mTab;
+ @Mock
+ private ActionModeCallbackHelper mActionModeCallbackHelper;
+ @Mock
+ private ActionMode mActionMode;
+ @Mock
+ private Menu mMenu;
+
+ private ChromeActionModeCallback mActionModeCallback;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ ContextUtils.initApplicationContextForTests(RuntimeEnvironment.application);
+ RecordUserAction.setDisabledForTests(true);
+
+ mActionModeCallback = Mockito.spy(new ChromeActionModeCallback(
+ RuntimeEnvironment.application, mTab, mActionModeCallbackHelper));
+ }
+
+ @After
+ public void tearDown() {
+ FirstRunStatus.setFirstRunFlowComplete(false);
+ RecordUserAction.setDisabledForTests(false);
+ }
+
+ @Test
+ public void testOptionsBeforeFre() {
+ FirstRunStatus.setFirstRunFlowComplete(false);
+
+ mActionModeCallback.onCreateActionMode(mActionMode, mMenu);
+
+ Mockito.verify(mActionModeCallbackHelper)
+ .setAllowedMenuItems(ActionModeCallbackHelper.MENU_ITEM_PROCESS_TEXT
+ | ActionModeCallbackHelper.MENU_ITEM_SHARE);
+ }
+
+ @Test
+ public void testOptionsAfterFre() {
+ FirstRunStatus.setFirstRunFlowComplete(true);
+
+ mActionModeCallback.onCreateActionMode(mActionMode, mMenu);
+
+ Mockito.verify(mActionModeCallbackHelper)
+ .setAllowedMenuItems(ActionModeCallbackHelper.MENU_ITEM_PROCESS_TEXT
+ | ActionModeCallbackHelper.MENU_ITEM_SHARE
+ | ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH);
+ }
+
+ @Test
+ public void testShareTriggersSearchPromo() {
+ FirstRunStatus.setFirstRunFlowComplete(true);
+
+ Mockito.when(mActionModeCallbackHelper.isActionModeValid()).thenReturn(true);
+ Mockito.when(mActionModeCallbackHelper.getSelectedText()).thenReturn("OhHai");
+
+ LocaleManager localeManager = Mockito.spy(new LocaleManager() {
+ @Override
+ public void showSearchEnginePromoIfNeeded(
+ Activity activity, Callback<Boolean> onSearchEngineFinalized) {
+ onSearchEngineFinalized.onResult(true);
+ }
+ });
+ LocaleManager.setInstanceForTest(localeManager);
+
+ MenuItem shareItem = Mockito.mock(MenuItem.class);
+ Mockito.when(shareItem.getItemId()).thenReturn(R.id.select_action_menu_web_search);
+ mActionModeCallback.onActionItemClicked(mActionMode, shareItem);
+
+ Mockito.verify(localeManager).showSearchEnginePromoIfNeeded(Mockito.any(), Mockito.any());
+ }
+}
« no previous file with comments | « chrome/android/java_sources.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698