| Index: chrome/android/javatests_shell/src/org/chromium/chrome/browser/util/FeatureUtilitiesTest.java
|
| diff --git a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/util/FeatureUtilitiesTest.java b/chrome/android/javatests_shell/src/org/chromium/chrome/browser/util/FeatureUtilitiesTest.java
|
| deleted file mode 100644
|
| index c24133c192c244ffc92dd701f25c200a1c951f60..0000000000000000000000000000000000000000
|
| --- a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/util/FeatureUtilitiesTest.java
|
| +++ /dev/null
|
| @@ -1,242 +0,0 @@
|
| -// Copyright 2014 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.util;
|
| -
|
| -import android.accounts.Account;
|
| -import android.accounts.AuthenticatorDescription;
|
| -import android.content.Context;
|
| -import android.content.Intent;
|
| -import android.content.pm.ResolveInfo;
|
| -import android.speech.RecognizerIntent;
|
| -import android.test.InstrumentationTestCase;
|
| -import android.test.mock.MockContext;
|
| -import android.test.mock.MockPackageManager;
|
| -import android.test.suitebuilder.annotation.SmallTest;
|
| -
|
| -import org.chromium.base.ThreadUtils;
|
| -import org.chromium.base.test.util.AdvancedMockContext;
|
| -import org.chromium.base.test.util.Feature;
|
| -import org.chromium.sync.signin.AccountManagerHelper;
|
| -import org.chromium.sync.test.util.MockAccountManager;
|
| -
|
| -import java.util.ArrayList;
|
| -import java.util.List;
|
| -import java.util.concurrent.Callable;
|
| -
|
| -/**
|
| - * Unit Test for FeatureUtilities.
|
| - */
|
| -public class FeatureUtilitiesTest extends InstrumentationTestCase {
|
| -
|
| - private IntentTestMockContext mContextWithSpeech;
|
| - private IntentTestMockContext mContextWithoutSpeech;
|
| - private MockAuthenticationAccountManager mAccountManager;
|
| - private AdvancedMockContext mAccountTestingContext;
|
| - private Account mTestAccount;
|
| -
|
| - public FeatureUtilitiesTest() {
|
| - mContextWithSpeech = new IntentTestMockContext(
|
| - RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
|
| -
|
| - mContextWithoutSpeech = new IntentTestMockContext(
|
| - RecognizerIntent.ACTION_WEB_SEARCH);
|
| -
|
| - mTestAccount = AccountManagerHelper.createAccountFromName("Dummy");
|
| - }
|
| -
|
| - @Override
|
| - public void setUp() {
|
| - // GetInstrumentation().getTargetContext() cannot be called in
|
| - // constructor due to external dependencies.
|
| - mAccountTestingContext = new AdvancedMockContext(
|
| - getInstrumentation().getTargetContext());
|
| - }
|
| -
|
| - private static class IntentTestPackageManager extends MockPackageManager {
|
| -
|
| - private final String mAction;
|
| -
|
| - public IntentTestPackageManager(String recognizesAction) {
|
| - super();
|
| - mAction = recognizesAction;
|
| - }
|
| -
|
| - @Override
|
| - public List<ResolveInfo> queryIntentActivities(Intent intent, int flags) {
|
| - List<ResolveInfo> resolveInfoList = new ArrayList<ResolveInfo>();
|
| -
|
| - if (intent.getAction().equals(mAction)) {
|
| - // Add an entry to the returned list as the action
|
| - // being queried exists.
|
| - ResolveInfo resolveInfo = new ResolveInfo();
|
| - resolveInfoList.add(resolveInfo);
|
| - }
|
| -
|
| - return resolveInfoList;
|
| - }
|
| - }
|
| -
|
| - private static class IntentTestMockContext extends MockContext {
|
| -
|
| - private final String mAction;
|
| -
|
| - public IntentTestMockContext(String recognizesAction) {
|
| - super();
|
| - mAction = recognizesAction;
|
| - }
|
| -
|
| - @Override
|
| - public IntentTestPackageManager getPackageManager() {
|
| - return new IntentTestPackageManager(mAction);
|
| - }
|
| - }
|
| -
|
| - private static class MockAuthenticationAccountManager extends MockAccountManager {
|
| -
|
| - private final String mAccountType;
|
| -
|
| - public MockAuthenticationAccountManager(Context localContext, Context testContext,
|
| - String accountType, Account... accounts) {
|
| - super(localContext, testContext, accounts);
|
| - mAccountType = accountType;
|
| - }
|
| -
|
| - @Override
|
| - public Account[] getAccountsByType(String accountType) {
|
| - if (accountType.equals(mAccountType)) {
|
| - // Calling function uses length of array to determine if
|
| - // accounts of the requested type are available, so return
|
| - // a non-empty array to indicate the account type is correct.
|
| - return new Account[] { AccountManagerHelper.createAccountFromName("Dummy") };
|
| - }
|
| -
|
| - return new Account[0];
|
| - }
|
| -
|
| - @Override
|
| - public AuthenticatorDescription[] getAuthenticatorTypes() {
|
| - AuthenticatorDescription googleAuthenticator =
|
| - new AuthenticatorDescription(mAccountType, "p1", 0, 0, 0, 0);
|
| -
|
| - return new AuthenticatorDescription[] { googleAuthenticator };
|
| - }
|
| - }
|
| -
|
| - private static boolean isRecognitionIntentPresent(
|
| - final IntentTestMockContext context, final boolean useCachedResult) {
|
| - // Context can only be queried on a UI Thread.
|
| - return ThreadUtils.runOnUiThreadBlockingNoException(
|
| - new Callable<Boolean>() {
|
| - @Override
|
| - public Boolean call() {
|
| - return FeatureUtilities.isRecognitionIntentPresent(
|
| - context,
|
| - useCachedResult);
|
| - }
|
| - });
|
| - }
|
| -
|
| - private void setUpAccount(final String accountType) {
|
| - mAccountManager = new MockAuthenticationAccountManager(
|
| - mAccountTestingContext,
|
| - getInstrumentation().getContext(),
|
| - accountType,
|
| - mTestAccount);
|
| -
|
| - AccountManagerHelper.overrideAccountManagerHelperForTests(
|
| - mAccountTestingContext,
|
| - mAccountManager);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"FeatureUtilities", "Speech"})
|
| - public void testSpeechFeatureAvailable() {
|
| -
|
| - final boolean doNotUseCachedResult = false;
|
| - final boolean recognizesSpeech = isRecognitionIntentPresent(
|
| - mContextWithSpeech,
|
| - doNotUseCachedResult);
|
| -
|
| - assertTrue(recognizesSpeech);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"FeatureUtilities", "Speech"})
|
| - public void testSpeechFeatureUnavailable() {
|
| -
|
| - final boolean doNotUseCachedResult = false;
|
| - final boolean recognizesSpeech = isRecognitionIntentPresent(
|
| - mContextWithoutSpeech,
|
| - doNotUseCachedResult);
|
| -
|
| - assertFalse(recognizesSpeech);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"FeatureUtilities", "Speech"})
|
| - public void testCachedSpeechFeatureAvailability() {
|
| -
|
| - // Initial call will cache the fact that speech is recognized.
|
| - final boolean doNotUseCachedResult = false;
|
| - isRecognitionIntentPresent(
|
| - mContextWithSpeech,
|
| - doNotUseCachedResult);
|
| -
|
| - // Pass a context that does not recognize speech, but use cached result
|
| - // which does recognize speech.
|
| - final boolean useCachedResult = true;
|
| - final boolean recognizesSpeech = isRecognitionIntentPresent(
|
| - mContextWithoutSpeech,
|
| - useCachedResult);
|
| -
|
| - // Check that we still recognize speech as we're using cached result.
|
| - assertTrue(recognizesSpeech);
|
| -
|
| - // Check if we can turn cached result off again.
|
| - final boolean RecognizesSpeechUncached = isRecognitionIntentPresent(
|
| - mContextWithoutSpeech,
|
| - doNotUseCachedResult);
|
| -
|
| - assertFalse(RecognizesSpeechUncached);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"FeatureUtilities", "GoogleAccounts"})
|
| - public void testHasGoogleAccountCorrectlyDetected() {
|
| -
|
| - // Set up an account manager mock that returns Google account types
|
| - // when queried.
|
| - setUpAccount(AccountManagerHelper.GOOGLE_ACCOUNT_TYPE);
|
| -
|
| - boolean hasAccounts = FeatureUtilities.hasGoogleAccounts(
|
| - mAccountTestingContext);
|
| -
|
| - assertTrue(hasAccounts);
|
| -
|
| - boolean hasAuthenticator = FeatureUtilities.hasGoogleAccountAuthenticator(
|
| - mAccountTestingContext);
|
| -
|
| - assertTrue(hasAuthenticator);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"FeatureUtilities", "GoogleAccounts"})
|
| - public void testHasNoGoogleAccountCorrectlyDetected() {
|
| -
|
| - // Set up an account manager mock that doesn't return Google account
|
| - // types when queried.
|
| - setUpAccount("Not A Google Account");
|
| -
|
| - boolean hasAccounts = FeatureUtilities.hasGoogleAccounts(
|
| - mAccountTestingContext);
|
| -
|
| - assertFalse(hasAccounts);
|
| -
|
| - boolean hasAuthenticator = FeatureUtilities.hasGoogleAccountAuthenticator(
|
| - mAccountTestingContext);
|
| -
|
| - assertFalse(hasAuthenticator);
|
| - }
|
| -}
|
|
|