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

Unified Diff: components/precache/android/java/src/org/chromium/components/precache/DeviceState.java

Issue 1031003003: precache: Move the java files into //components/precache/android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 9 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: components/precache/android/java/src/org/chromium/components/precache/DeviceState.java
diff --git a/components/precache/android/java/src/org/chromium/components/precache/DeviceState.java b/components/precache/android/java/src/org/chromium/components/precache/DeviceState.java
new file mode 100644
index 0000000000000000000000000000000000000000..70995ca5240019c29306e52fca4cf93a4c9eed74
--- /dev/null
+++ b/components/precache/android/java/src/org/chromium/components/precache/DeviceState.java
@@ -0,0 +1,79 @@
+// Copyright 2015 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.components.precache;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.os.BatteryManager;
+
+import org.chromium.base.ApiCompatibilityUtils;
+import org.chromium.base.VisibleForTesting;
+
+/**
+ * Utility class that provides information about the current state of the device.
+ */
+public class DeviceState {
+ private static DeviceState sDeviceState = null;
+
+ /** Disallow Construction of DeviceState objects. Use {@link #getInstance()} instead to create
+ * a singleton instance.
+ */
+ protected DeviceState() {}
+
+ public static DeviceState getInstance() {
+ if (sDeviceState == null) sDeviceState = new DeviceState();
+ return sDeviceState;
+ }
+
+ protected NetworkInfoDelegateFactory mNetworkInfoDelegateFactory =
+ new NetworkInfoDelegateFactory();
+
+ @VisibleForTesting
+ void setNetworkInfoDelegateFactory(NetworkInfoDelegateFactory factory) {
+ mNetworkInfoDelegateFactory = factory;
+ }
+
+ /** @return integer representing the current status of the battery. */
+ @VisibleForTesting
+ int getStickyBatteryStatus(Context context) {
+ IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+ // Call registerReceiver on context.getApplicationContext(), not on context itself, because
+ // context could be a BroadcastReceiver context, which would throw an
+ // android.content.ReceiverCallNotAllowedException.
+ Intent batteryStatus = context.getApplicationContext().registerReceiver(null, iFilter);
+
+ if (batteryStatus == null) {
+ return BatteryManager.BATTERY_STATUS_UNKNOWN;
+ }
+ return batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS,
+ BatteryManager.BATTERY_STATUS_UNKNOWN);
+ }
+
+ /** @return whether the device is connected to power. */
+ public boolean isPowerConnected(Context context) {
+ int status = getStickyBatteryStatus(context);
+ return status == BatteryManager.BATTERY_STATUS_CHARGING
+ || status == BatteryManager.BATTERY_STATUS_FULL;
+ }
+
+ public boolean isInteractive(Context context) {
+ return ApiCompatibilityUtils.isInteractive(context);
+ }
+
+ /** @return whether the currently active network is Wi-Fi, not roaming, and not metered. */
+ public boolean isWifiAvailable(Context context) {
+ NetworkInfoDelegate networkInfo =
+ mNetworkInfoDelegateFactory.getNetworkInfoDelegate(context);
+ return (networkInfo.isValid()
+ && networkInfo.getType() == ConnectivityManager.TYPE_WIFI
+ && networkInfo.isAvailable()
+ && networkInfo.isConnected()
+ && !networkInfo.isRoaming()
+ && !networkInfo.isActiveNetworkMetered());
+ }
+}
+

Powered by Google App Engine
This is Rietveld 408576698