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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/BluetoothChooserDialogTest.java

Issue 2032273002: If location services are turned off, have the BT chooser prompt the user to turn them on. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkcr
Patch Set: Sync Created 4 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
Index: chrome/android/javatests/src/org/chromium/chrome/browser/BluetoothChooserDialogTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/BluetoothChooserDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/BluetoothChooserDialogTest.java
index a74ed73885abd9449d99a553b9f808b82305114e..45d5e4992342d500799dea653a88cf3729160741 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/BluetoothChooserDialogTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/BluetoothChooserDialogTest.java
@@ -7,7 +7,9 @@ package org.chromium.chrome.browser;
import android.Manifest;
import android.app.Dialog;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
+import android.location.LocationManager;
import android.test.MoreAsserts;
import android.test.suitebuilder.annotation.SmallTest;
import android.view.View;
@@ -41,6 +43,7 @@ public class BluetoothChooserDialogTest extends ChromeActivityTestCaseBase<Chrom
static class BluetoothChooserDialogWithFakeNatives extends BluetoothChooserDialog {
int mFinishedEventType = -1;
String mFinishedDeviceId;
+ int mRestartSearchCount = 0;
BluetoothChooserDialogWithFakeNatives(WindowAndroid windowAndroid, String origin,
int securityLevel, long nativeBluetoothChooserDialogPtr) {
@@ -57,7 +60,9 @@ public class BluetoothChooserDialogTest extends ChromeActivityTestCaseBase<Chrom
}
@Override
- void nativeRestartSearch(long nativeBluetoothChooserAndroid) {}
+ void nativeRestartSearch(long nativeBluetoothChooserAndroid) {
+ mRestartSearchCount++;
+ }
@Override
void nativeShowBluetoothOverviewLink(long nativeBluetoothChooserAndroid) {}
@@ -156,13 +161,11 @@ public class BluetoothChooserDialogTest extends ChromeActivityTestCaseBase<Chrom
}
/**
- * The messages include <link> ... </link> or <link1> ... </link1>, <link2> ... </link2>
- * sections that are used to create clickable spans. For testing the messages, this function
- * returns the raw string without the tags.
+ * The messages include <*link*> ... </*link*> sections that are used to create clickable spans.
+ * For testing the messages, this function returns the raw string without the tags.
*/
private static String removeLinkTags(String message) {
- return message.replaceAll("</?link1>", "").replaceAll(
- "</?link2>", "").replaceAll("</?link>", "");
+ return message.replaceAll("</?[^>]*link[^>]*>", "");
}
@SmallTest
@@ -286,12 +289,71 @@ public class BluetoothChooserDialogTest extends ChromeActivityTestCaseBase<Chrom
@Override
public void run() {
permissionDelegate.mCallback.onRequestPermissionsResult(
- new String[] {Manifest.permission.ACCESS_FINE_LOCATION},
+ new String[] {Manifest.permission.ACCESS_COARSE_LOCATION},
new int[] {PackageManager.PERMISSION_GRANTED});
}
});
- assertEquals(removeLinkTags(getActivity().getString(R.string.bluetooth_adapter_off_help)),
+ assertEquals(1, mChooserDialog.mRestartSearchCount);
+ assertEquals(removeLinkTags(getActivity().getString(R.string.bluetooth_searching)),
+ statusView.getText().toString());
+
+ mChooserDialog.closeDialog();
+ }
+
+ @SmallTest
+ public void testNoLocationServices() throws InterruptedException {
+ ItemChooserDialog itemChooser = mChooserDialog.mItemChooserDialog;
+ Dialog dialog = itemChooser.getDialogForTesting();
+ assertTrue(dialog.isShowing());
+
+ final TextViewWithClickableSpans statusView =
+ (TextViewWithClickableSpans) dialog.findViewById(R.id.status);
+ final TextViewWithClickableSpans errorView =
+ (TextViewWithClickableSpans) dialog.findViewById(R.id.not_found_message);
+ final View items = dialog.findViewById(R.id.items);
+ final Button button = (Button) dialog.findViewById(R.id.positive);
+ final View progress = dialog.findViewById(R.id.progress);
+
+ final TestAndroidPermissionDelegate permissionDelegate =
+ new TestAndroidPermissionDelegate();
+ mWindowAndroid.setAndroidPermissionDelegate(permissionDelegate);
+
+ // Grant permissions, and turn off location services.
+ mLocationUtils.mLocationGranted = true;
+ mLocationUtils.mSystemLocationSettingsEnabled = false;
+
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ mChooserDialog.notifyDiscoveryState(
+ BluetoothChooserDialog.DISCOVERY_FAILED_TO_START);
+ }
+ });
+
+ assertEquals(removeLinkTags(
+ getActivity().getString(R.string.bluetooth_need_location_services_on)),
+ errorView.getText().toString());
+ assertEquals(removeLinkTags(getActivity().getString(
+ R.string.bluetooth_need_location_permission_help)),
+ statusView.getText().toString());
+ assertFalse(button.isEnabled());
+ assertEquals(View.VISIBLE, errorView.getVisibility());
+ assertEquals(View.GONE, items.getVisibility());
+ assertEquals(View.GONE, progress.getVisibility());
+
+ // Turn on Location Services.
+ mLocationUtils.mSystemLocationSettingsEnabled = true;
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ mChooserDialog.mLocationModeBroadcastReceiver.onReceive(
+ getActivity(), new Intent(LocationManager.MODE_CHANGED_ACTION));
+ }
+ });
+
+ assertEquals(1, mChooserDialog.mRestartSearchCount);
+ assertEquals(removeLinkTags(getActivity().getString(R.string.bluetooth_searching)),
statusView.getText().toString());
mChooserDialog.closeDialog();
@@ -333,5 +395,12 @@ public class BluetoothChooserDialogTest extends ChromeActivityTestCaseBase<Chrom
public boolean hasAndroidLocationPermission(Context context) {
return mLocationGranted;
}
+
+ public boolean mSystemLocationSettingsEnabled = true;
+
+ @Override
+ public boolean isSystemLocationSettingEnabled(Context context) {
+ return mSystemLocationSettingsEnabled;
+ }
}
}

Powered by Google App Engine
This is Rietveld 408576698