DO NOT MERGE: Remove obsolete "headless" support
Change-Id: I829fe48e6ebcb819e260646bb19ac6ddfcf07f83
This commit is contained in:
@@ -79,9 +79,6 @@ public class SurfaceControl {
|
||||
private final String mName;
|
||||
int mNativeObject; // package visibility only for Surface.java access
|
||||
|
||||
private static final boolean HEADLESS = "1".equals(
|
||||
SystemProperties.get("ro.config.headless", "0"));
|
||||
|
||||
/* flags used in constructor (keep in sync with ISurfaceComposerClient.h) */
|
||||
|
||||
/**
|
||||
@@ -232,8 +229,6 @@ public class SurfaceControl {
|
||||
new Throwable());
|
||||
}
|
||||
|
||||
checkHeadless();
|
||||
|
||||
mName = name;
|
||||
mNativeObject = nativeCreate(session, name, w, h, format, flags);
|
||||
if (mNativeObject == 0) {
|
||||
@@ -619,10 +614,4 @@ public class SurfaceControl {
|
||||
}
|
||||
nativeScreenshot(display, consumer, width, height, minLayer, maxLayer, allLayers);
|
||||
}
|
||||
|
||||
private static void checkHeadless() {
|
||||
if (HEADLESS) {
|
||||
throw new UnsupportedOperationException("Device is headless");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,7 +231,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
/** If true, hitting shift & menu will broadcast Intent.ACTION_BUG_REPORT */
|
||||
boolean mEnableShiftMenuBugReports = false;
|
||||
|
||||
boolean mHeadless;
|
||||
boolean mSafeMode;
|
||||
WindowState mStatusBar = null;
|
||||
int mStatusBarHeight;
|
||||
@@ -855,7 +854,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
mContext = context;
|
||||
mWindowManager = windowManager;
|
||||
mWindowManagerFuncs = windowManagerFuncs;
|
||||
mHeadless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
|
||||
mHandler = new PolicyHandler();
|
||||
mOrientationListener = new MyOrientationListener(mContext, mHandler);
|
||||
try {
|
||||
@@ -3602,9 +3600,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void notifyLidSwitchChanged(long whenNanos, boolean lidOpen) {
|
||||
// do nothing if headless
|
||||
if (mHeadless) return;
|
||||
|
||||
// lid changed state
|
||||
final int newLidState = lidOpen ? LID_OPEN : LID_CLOSED;
|
||||
if (newLidState == mLidState) {
|
||||
@@ -3837,7 +3832,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
// the device some other way (which is why we have an exemption here for injected
|
||||
// events).
|
||||
int result;
|
||||
if ((isScreenOn && !mHeadless) || (isInjected && !isWakeKey)) {
|
||||
if (isScreenOn || (isInjected && !isWakeKey)) {
|
||||
// When the screen is on or if the key is injected pass the key to the application.
|
||||
result = ACTION_PASS_TO_USER;
|
||||
} else {
|
||||
@@ -4663,10 +4658,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void systemReady() {
|
||||
if (!mHeadless) {
|
||||
mKeyguardDelegate = new KeyguardServiceDelegate(mContext, null);
|
||||
mKeyguardDelegate.onSystemReady();
|
||||
}
|
||||
mKeyguardDelegate = new KeyguardServiceDelegate(mContext, null);
|
||||
mKeyguardDelegate.onSystemReady();
|
||||
|
||||
synchronized (mLock) {
|
||||
updateOrientationListenerLp();
|
||||
mSystemReady = true;
|
||||
@@ -4693,7 +4687,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void showBootMessage(final CharSequence msg, final boolean always) {
|
||||
if (mHeadless) return;
|
||||
mHandler.post(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (mBootMsgDialog == null) {
|
||||
|
||||
@@ -122,7 +122,6 @@ class ServerThread {
|
||||
String factoryTestStr = SystemProperties.get("ro.factorytest");
|
||||
int factoryTest = "".equals(factoryTestStr) ? SystemServer.FACTORY_TEST_OFF
|
||||
: Integer.parseInt(factoryTestStr);
|
||||
final boolean headless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
|
||||
|
||||
Installer installer = null;
|
||||
AccountManagerService accountManager = null;
|
||||
@@ -624,10 +623,8 @@ class ServerThread {
|
||||
R.bool.config_enableWallpaperService)) {
|
||||
try {
|
||||
Slog.i(TAG, "Wallpaper Service");
|
||||
if (!headless) {
|
||||
wallpaper = new WallpaperManagerService(context);
|
||||
ServiceManager.addService(Context.WALLPAPER_SERVICE, wallpaper);
|
||||
}
|
||||
wallpaper = new WallpaperManagerService(context);
|
||||
ServiceManager.addService(Context.WALLPAPER_SERVICE, wallpaper);
|
||||
} catch (Throwable e) {
|
||||
reportWtf("starting Wallpaper Service", e);
|
||||
}
|
||||
@@ -944,9 +941,7 @@ class ServerThread {
|
||||
} catch (Throwable e) {
|
||||
reportWtf("observing native crashes", e);
|
||||
}
|
||||
if (!headless) {
|
||||
startSystemUi(contextF);
|
||||
}
|
||||
startSystemUi(contextF);
|
||||
try {
|
||||
if (mountServiceF != null) mountServiceF.systemReady();
|
||||
} catch (Throwable e) {
|
||||
|
||||
@@ -331,8 +331,6 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
|
||||
public IntentFirewall mIntentFirewall;
|
||||
|
||||
private final boolean mHeadless;
|
||||
|
||||
// Whether we should show our dialogs (ANR, crash, etc) or just perform their
|
||||
// default actuion automatically. Important for devices without direct input
|
||||
// devices.
|
||||
@@ -1984,8 +1982,6 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
|
||||
mGrantFile = new AtomicFile(new File(systemDir, "urigrants.xml"));
|
||||
|
||||
mHeadless = "1".equals(SystemProperties.get("ro.config.headless", "0"));
|
||||
|
||||
// User 0 is the first and only user that runs at boot.
|
||||
mStartedUsers.put(0, new UserStartedState(new UserHandle(0), true));
|
||||
mUserLru.add(Integer.valueOf(0));
|
||||
@@ -2853,13 +2849,6 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
}
|
||||
|
||||
boolean startHomeActivityLocked(int userId) {
|
||||
if (mHeadless) {
|
||||
// Added because none of the other calls to ensureBootCompleted seem to fire
|
||||
// when running headless.
|
||||
ensureBootCompleted();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL
|
||||
&& mTopAction == null) {
|
||||
// We are running in factory test mode, but unable to find
|
||||
@@ -5000,7 +4989,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
// See if the top visible activity is waiting to run in this process...
|
||||
if (normalMode) {
|
||||
try {
|
||||
if (mStackSupervisor.attachApplicationLocked(app, mHeadless)) {
|
||||
if (mStackSupervisor.attachApplicationLocked(app)) {
|
||||
didSomething = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -9496,10 +9485,6 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
|
||||
private boolean handleAppCrashLocked(ProcessRecord app, String shortMsg, String longMsg,
|
||||
String stackTrace) {
|
||||
if (mHeadless) {
|
||||
Log.e(TAG, "handleAppCrashLocked: " + app.processName);
|
||||
return false;
|
||||
}
|
||||
long now = SystemClock.uptimeMillis();
|
||||
|
||||
Long crashTime;
|
||||
@@ -14042,9 +14027,6 @@ public final class ActivityManagerService extends ActivityManagerNative
|
||||
*/
|
||||
boolean updateConfigurationLocked(Configuration values,
|
||||
ActivityRecord starting, boolean persistent, boolean initLocale) {
|
||||
// do nothing if we are headless
|
||||
if (mHeadless) return true;
|
||||
|
||||
int changes = 0;
|
||||
|
||||
if (values != null) {
|
||||
|
||||
@@ -366,7 +366,7 @@ public final class ActivityStackSupervisor {
|
||||
return resumedActivity;
|
||||
}
|
||||
|
||||
boolean attachApplicationLocked(ProcessRecord app, boolean headless) throws Exception {
|
||||
boolean attachApplicationLocked(ProcessRecord app) throws Exception {
|
||||
boolean didSomething = false;
|
||||
final String processName = app.processName;
|
||||
for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
|
||||
@@ -379,10 +379,7 @@ public final class ActivityStackSupervisor {
|
||||
if (hr.app == null && app.uid == hr.info.applicationInfo.uid
|
||||
&& processName.equals(hr.processName)) {
|
||||
try {
|
||||
if (headless) {
|
||||
Slog.e(TAG, "Starting activities not supported on headless device: "
|
||||
+ hr);
|
||||
} else if (realStartActivityLocked(hr, app, true, true)) {
|
||||
if (realStartActivityLocked(hr, app, true, true)) {
|
||||
didSomething = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -102,7 +102,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
|
||||
// Otherwise WFD is enabled according to the value of config_enableWifiDisplay.
|
||||
private static final String FORCE_WIFI_DISPLAY_ENABLE = "persist.debug.wfd.enable";
|
||||
|
||||
private static final String SYSTEM_HEADLESS = "ro.config.headless";
|
||||
private static final long WAIT_FOR_DEFAULT_DISPLAY_TIMEOUT = 10000;
|
||||
|
||||
private static final int MSG_REGISTER_DEFAULT_DISPLAY_ADAPTER = 1;
|
||||
@@ -116,7 +115,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
|
||||
private static final int DISPLAY_BLANK_STATE_UNBLANKED = 2;
|
||||
|
||||
private final Context mContext;
|
||||
private final boolean mHeadless;
|
||||
private final DisplayManagerHandler mHandler;
|
||||
private final Handler mUiHandler;
|
||||
private final DisplayAdapterListener mDisplayAdapterListener;
|
||||
@@ -202,8 +200,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
|
||||
|
||||
public DisplayManagerService(Context context, Handler mainHandler) {
|
||||
mContext = context;
|
||||
mHeadless = SystemProperties.get(SYSTEM_HEADLESS).equals("1");
|
||||
|
||||
mHandler = new DisplayManagerHandler(mainHandler.getLooper());
|
||||
mUiHandler = UiThread.getHandler();
|
||||
mDisplayAdapterListener = new DisplayAdapterListener();
|
||||
@@ -269,15 +265,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
|
||||
mHandler.sendEmptyMessage(MSG_REGISTER_ADDITIONAL_DISPLAY_ADAPTERS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the device is headless.
|
||||
*
|
||||
* @return True if the device is headless.
|
||||
*/
|
||||
public boolean isHeadless() {
|
||||
return mHeadless;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a display transaction listener to provide the client a chance to
|
||||
* update its surfaces within the same transaction as any display layout updates.
|
||||
@@ -779,13 +766,8 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
|
||||
private void registerDefaultDisplayAdapter() {
|
||||
// Register default display adapter.
|
||||
synchronized (mSyncRoot) {
|
||||
if (mHeadless) {
|
||||
registerDisplayAdapterLocked(new HeadlessDisplayAdapter(
|
||||
mSyncRoot, mContext, mHandler, mDisplayAdapterListener));
|
||||
} else {
|
||||
registerDisplayAdapterLocked(new LocalDisplayAdapter(
|
||||
mSyncRoot, mContext, mHandler, mDisplayAdapterListener));
|
||||
}
|
||||
registerDisplayAdapterLocked(new LocalDisplayAdapter(
|
||||
mSyncRoot, mContext, mHandler, mDisplayAdapterListener));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1153,7 +1135,6 @@ public final class DisplayManagerService extends IDisplayManager.Stub {
|
||||
pw.println("DISPLAY MANAGER (dumpsys display)");
|
||||
|
||||
synchronized (mSyncRoot) {
|
||||
pw.println(" mHeadless=" + mHeadless);
|
||||
pw.println(" mOnlyCode=" + mOnlyCore);
|
||||
pw.println(" mSafeMode=" + mSafeMode);
|
||||
pw.println(" mPendingTraversal=" + mPendingTraversal);
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.server.display;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.Display;
|
||||
|
||||
/**
|
||||
* Provides a fake default display for headless systems.
|
||||
* <p>
|
||||
* Display adapters are guarded by the {@link DisplayManagerService.SyncRoot} lock.
|
||||
* </p>
|
||||
*/
|
||||
final class HeadlessDisplayAdapter extends DisplayAdapter {
|
||||
private static final String TAG = "HeadlessDisplayAdapter";
|
||||
|
||||
// Called with SyncRoot lock held.
|
||||
public HeadlessDisplayAdapter(DisplayManagerService.SyncRoot syncRoot,
|
||||
Context context, Handler handler, Listener listener) {
|
||||
super(syncRoot, context, handler, listener, TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerLocked() {
|
||||
super.registerLocked();
|
||||
sendDisplayDeviceEventLocked(new HeadlessDisplayDevice(), DISPLAY_DEVICE_EVENT_ADDED);
|
||||
}
|
||||
|
||||
private final class HeadlessDisplayDevice extends DisplayDevice {
|
||||
private DisplayDeviceInfo mInfo;
|
||||
|
||||
public HeadlessDisplayDevice() {
|
||||
super(HeadlessDisplayAdapter.this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DisplayDeviceInfo getDisplayDeviceInfoLocked() {
|
||||
if (mInfo == null) {
|
||||
mInfo = new DisplayDeviceInfo();
|
||||
mInfo.name = getContext().getResources().getString(
|
||||
com.android.internal.R.string.display_manager_built_in_display_name);
|
||||
mInfo.width = 640;
|
||||
mInfo.height = 480;
|
||||
mInfo.refreshRate = 60;
|
||||
mInfo.densityDpi = DisplayMetrics.DENSITY_DEFAULT;
|
||||
mInfo.xDpi = 160;
|
||||
mInfo.yDpi = 160;
|
||||
mInfo.flags = DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY
|
||||
| DisplayDeviceInfo.FLAG_SECURE
|
||||
| DisplayDeviceInfo.FLAG_SUPPORTS_PROTECTED_BUFFERS;
|
||||
mInfo.type = Display.TYPE_BUILT_IN;
|
||||
mInfo.touch = DisplayDeviceInfo.TOUCH_NONE;
|
||||
}
|
||||
return mInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -293,8 +293,6 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
|
||||
final private KeyguardDisableHandler mKeyguardDisableHandler;
|
||||
|
||||
private final boolean mHeadless;
|
||||
|
||||
final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
@@ -734,7 +732,6 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
com.android.internal.R.bool.config_sf_limitedAlpha);
|
||||
mInputManager = inputManager; // Must be before createDisplayContentLocked.
|
||||
mDisplayManagerService = displayManager;
|
||||
mHeadless = displayManager.isHeadless();
|
||||
mDisplaySettings = new DisplaySettings(context);
|
||||
mDisplaySettings.readSettingsLocked();
|
||||
|
||||
@@ -5259,7 +5256,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
|
||||
public void performBootTimeout() {
|
||||
synchronized(mWindowMap) {
|
||||
if (mDisplayEnabled || mHeadless) {
|
||||
if (mDisplayEnabled) {
|
||||
return;
|
||||
}
|
||||
Slog.w(TAG, "***** BOOT TIMEOUT: forcing display enabled");
|
||||
@@ -5443,7 +5440,6 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// only allow disables from pids which have count on, etc.
|
||||
@Override
|
||||
public void showStrictModeViolation(boolean on) {
|
||||
if (mHeadless) return;
|
||||
int pid = Binder.getCallingPid();
|
||||
mH.sendMessage(mH.obtainMessage(H.SHOW_STRICT_MODE_VIOLATION, on ? 1 : 0, pid));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user