diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 9053af27184b8..1634d11870e85 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -73,6 +73,8 @@ import android.media.MediaRouter;
import android.media.session.MediaSessionManager;
import android.net.ConnectivityManager;
import android.net.IConnectivityManager;
+import android.net.EthernetManager;
+import android.net.IEthernetManager;
import android.net.INetworkPolicyManager;
import android.net.NetworkPolicyManager;
import android.net.NetworkScoreManager;
@@ -599,6 +601,13 @@ class ContextImpl extends Context {
return new WifiScanner(ctx.getOuterContext(), service);
}});
+ registerService(ETHERNET_SERVICE, new ServiceFetcher() {
+ public Object createService(ContextImpl ctx) {
+ IBinder b = ServiceManager.getService(ETHERNET_SERVICE);
+ IEthernetManager service = IEthernetManager.Stub.asInterface(b);
+ return new EthernetManager(ctx.getOuterContext(), service);
+ }});
+
registerService(WINDOW_SERVICE, new ServiceFetcher() {
Display mDefaultDisplay;
public Object getService(ContextImpl ctx) {
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 9e02e4b0a076c..d0ac9c923d08c 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -2069,6 +2069,9 @@ public abstract class Context {
*
{@link #WIFI_P2P_SERVICE} ("wifip2p")
* A {@link android.net.wifi.p2p.WifiP2pManager WifiP2pManager} for management of
* Wi-Fi Direct connectivity.
+ * {@link #ETHERNET_SERVICE} ("ethernet")
+ * A {@link android.net.ethernet.EthernetManager EthernetManager} for
+ * management of Ethernet connectivity.
* {@link #INPUT_METHOD_SERVICE} ("input_method")
* An {@link android.view.inputmethod.InputMethodManager InputMethodManager}
* for management of input methods.
@@ -2380,6 +2383,18 @@ public abstract class Context {
*/
public static final String WIFI_SCANNING_SERVICE = "wifiscanner";
+ /**
+ * Use with {@link #getSystemService} to retrieve a {@link
+ * android.net.ethernet.EthernetManager} for handling management of
+ * Ethernet access.
+ *
+ * @see #getSystemService
+ * @see android.net.ethernet.EthernetManager
+ *
+ * @hide
+ */
+ public static final String ETHERNET_SERVICE = "ethernet";
+
/**
* Use with {@link #getSystemService} to retrieve a {@link
* android.net.nsd.NsdManager} for handling management of network service
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 55ae9c6f737cd..de46b1629ce75 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -130,6 +130,8 @@ public final class SystemServer {
"com.android.server.wifi.p2p.WifiP2pService";
private static final String HDMI_CEC_SERVICE_CLASS =
"com.android.server.hdmi.HdmiCecService";
+ private static final String ETHERNET_SERVICE_CLASS =
+ "com.android.server.ethernet.EthernetService";
private final int mFactoryTestMode;
private Timer mProfilerSnapshotTimer;
@@ -659,6 +661,12 @@ public final class SystemServer {
reportWtf("starting Wi-Fi Scanning Service", e);
}
+ try {
+ mSystemServiceManager.startService(ETHERNET_SERVICE_CLASS);
+ } catch (Throwable e) {
+ reportWtf("starting Ethernet Service", e);
+ }
+
try {
Slog.i(TAG, "Connectivity Service");
connectivity = new ConnectivityService(