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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManager.java

Issue 2906363002: Use fallback mechanism to obtain connected WiFi information in pre-M devices when Location permissi… (Closed)
Patch Set: Use fallback mechanism to obtain connected WiFi information in pre-M devices when Location permissi… Created 3 years, 7 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 | « no previous file | chrome/android/junit/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManagerTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManager.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManager.java
index 30ab1b09a577f9e052c84f899e05148f846cca88..8481f1234415fe8ba93556a594577abf7beaa6be 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManager.java
@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.omnibox.geo;
import android.Manifest;
import android.annotation.TargetApi;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
@@ -53,10 +55,28 @@ class PlatformNetworksManager {
static final String UNKNOWN_SSID = "<unknown ssid>";
static VisibleWifi getConnectedWifi(Context context, WifiManager wifiManager) {
- if (!hasLocationAndWifiPermission(context)) {
- return VisibleWifi.NO_WIFI_INFO;
+ if (hasLocationAndWifiPermission(context)) {
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+ return connectedWifiInfoToVisibleWifi(wifiInfo);
+ }
+ if (hasLocationPermission(context)) {
+ // Only location permission, so fallback to pre-marshmallow.
+ return getConnectedWifiPreMarshmallow(context);
+ }
+ return VisibleWifi.NO_WIFI_INFO;
+ }
+
+ static VisibleWifi getConnectedWifiPreMarshmallow(Context context) {
+ Intent intent = context.getApplicationContext().registerReceiver(
+ null, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION));
+ if (intent != null) {
+ WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
+ return connectedWifiInfoToVisibleWifi(wifiInfo);
}
- WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+ return VisibleWifi.NO_WIFI_INFO;
+ }
+
+ private static VisibleWifi connectedWifiInfoToVisibleWifi(@Nullable WifiInfo wifiInfo) {
if (wifiInfo == null) {
return VisibleWifi.NO_WIFI_INFO;
}
« no previous file with comments | « no previous file | chrome/android/junit/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManagerTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698