diff options
| -rw-r--r-- | api/current.txt | 14 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothAdapter.java | 19 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothSocket.java | 9 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetooth.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/net/LocalSocketImpl.java | 8 | ||||
| -rw-r--r-- | core/java/android/nfc/cardemulation/HostApduService.java | 2 | ||||
| -rw-r--r-- | core/java/android/nfc/cardemulation/OffHostApduService.java | 67 | ||||
| -rw-r--r-- | core/java/android/nfc/cardemulation/SeApduService.java | 111 | ||||
| -rw-r--r-- | core/java/android/provider/Settings.java | 7 | ||||
| -rw-r--r-- | core/java/android/service/notification/StatusBarNotification.java | 11 | ||||
| -rw-r--r-- | core/jni/android/print/android_print_pdf_PdfDocument.cpp | 1 | ||||
| -rw-r--r-- | core/res/res/values/attrs.xml | 39 | ||||
| -rw-r--r-- | core/res/res/values/public.xml | 2 | ||||
| -rw-r--r-- | services/java/com/android/server/BluetoothManagerService.java | 12 | ||||
| -rw-r--r-- | services/java/com/android/server/ConnectivityService.java | 32 | ||||
| -rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 10 |
16 files changed, 161 insertions, 185 deletions
diff --git a/api/current.txt b/api/current.txt index 2eb6ece1d2fc..161634271095 100644 --- a/api/current.txt +++ b/api/current.txt @@ -331,6 +331,7 @@ package android { field public static final int canRetrieveWindowContent = 16843653; // 0x1010385 field public static final int candidatesTextStyleSpans = 16843312; // 0x1010230 field public static final deprecated int capitalize = 16843113; // 0x1010169 + field public static final int category = 16843749; // 0x10103e5 field public static final int centerBright = 16842956; // 0x10100cc field public static final int centerColor = 16843275; // 0x101020b field public static final int centerDark = 16842952; // 0x10100c8 @@ -794,7 +795,6 @@ package android { field public static final int path = 16842794; // 0x101002a field public static final int pathPattern = 16842796; // 0x101002c field public static final int pathPrefix = 16842795; // 0x101002b - field public static final int paymentService = 16843749; // 0x10103e5 field public static final int permission = 16842758; // 0x1010006 field public static final int permissionFlags = 16843719; // 0x10103c7 field public static final int permissionGroup = 16842762; // 0x101000a @@ -14795,13 +14795,11 @@ package android.nfc.cardemulation { field public static final java.lang.String SERVICE_META_DATA = "android.nfc.HostApduService"; } - public abstract class SeApduService extends android.app.Service { - ctor public SeApduService(); - method public abstract void onAidSelected(byte[]); - method public final android.os.IBinder onBind(android.content.Intent); - method public abstract void onHciTransactionEvent(byte[], byte[]); - field public static final java.lang.String SERVICE_INTERFACE = "android.nfc.SeApduService"; - field public static final java.lang.String SERVICE_META_DATA = "android.nfc.SeApduService"; + public abstract class OffHostApduService extends android.app.Service { + ctor public OffHostApduService(); + method public abstract android.os.IBinder onBind(android.content.Intent); + field public static final java.lang.String SERVICE_INTERFACE = "android.nfc.OffHostApduService"; + field public static final java.lang.String SERVICE_META_DATA = "android.nfc.OffHostApduService"; } } diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index 72ecda1211e5..1ea13e102617 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -600,6 +600,25 @@ public final class BluetoothAdapter { } /** + * enable or disable Bluetooth HCI snoop log. + * + * <p>Requires the {@link android.Manifest.permission#BLUETOOTH_ADMIN} + * permission + * + * @return true to indicate configure HCI log successfully, or false on + * immediate error + * @hide + */ + public boolean configHciSnoopLog(boolean enable) { + try { + synchronized(mManagerCallback) { + if (mService != null) return mService.configHciSnoopLog(enable); + } + } catch (RemoteException e) {Log.e(TAG, "", e);} + return false; + } + + /** * Get the UUIDs supported by the local Bluetooth adapter. * * <p>Requires {@link android.Manifest.permission#BLUETOOTH} diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java index 5c534a1e8c1d..d10eaea2fba1 100644 --- a/core/java/android/bluetooth/BluetoothSocket.java +++ b/core/java/android/bluetooth/BluetoothSocket.java @@ -461,13 +461,8 @@ public final class BluetoothSocket implements Closeable { mSocket.close(); mSocket = null; } - if(mPfd != null) { - try { - mPfd.detachFd(); - } catch (IllegalArgumentException e) { - Log.w(TAG, "ignore IllegalArgumentException"); - } - } + if(mPfd != null) + mPfd.detachFd(); } } } diff --git a/core/java/android/bluetooth/IBluetooth.aidl b/core/java/android/bluetooth/IBluetooth.aidl index 80806f97d48b..07db8cc9c18a 100644 --- a/core/java/android/bluetooth/IBluetooth.aidl +++ b/core/java/android/bluetooth/IBluetooth.aidl @@ -80,4 +80,6 @@ interface IBluetooth // For Socket ParcelFileDescriptor connectSocket(in BluetoothDevice device, int type, in ParcelUuid uuid, int port, int flag); ParcelFileDescriptor createSocketChannel(int type, in String serviceName, in ParcelUuid uuid, int port, int flag); + + boolean configHciSnoopLog(boolean enable); } diff --git a/core/java/android/net/LocalSocketImpl.java b/core/java/android/net/LocalSocketImpl.java index fa3cf58f1899..b2ee50afc608 100644 --- a/core/java/android/net/LocalSocketImpl.java +++ b/core/java/android/net/LocalSocketImpl.java @@ -39,6 +39,8 @@ class LocalSocketImpl /** null if closed or not yet created */ private FileDescriptor fd; + /** whether fd is created internally */ + private boolean mFdCreatedInternally; // These fields are accessed by native code; /** file descriptor array received during a previous read */ @@ -247,6 +249,7 @@ class LocalSocketImpl } try { fd = Libcore.os.socket(OsConstants.AF_UNIX, osType, 0); + mFdCreatedInternally = true; } catch (ErrnoException e) { e.rethrowAsIOException(); } @@ -260,7 +263,10 @@ class LocalSocketImpl */ public void close() throws IOException { synchronized (LocalSocketImpl.this) { - if (fd == null) return; + if ((fd == null) || (mFdCreatedInternally == false)) { + fd = null; + return; + } try { Libcore.os.close(fd); } catch (ErrnoException e) { diff --git a/core/java/android/nfc/cardemulation/HostApduService.java b/core/java/android/nfc/cardemulation/HostApduService.java index e52c0c34c733..0624dc2123ef 100644 --- a/core/java/android/nfc/cardemulation/HostApduService.java +++ b/core/java/android/nfc/cardemulation/HostApduService.java @@ -28,7 +28,7 @@ import android.util.Log; * <meta-data android:name="android.nfc.HostApduService" android:resource="@xml/apduservice.xml"/> * </service></pre> * <p>For more details refer to {@link #SERVICE_META_DATA}, - * <code><{@link android.R.styleable#ApduService apdu-service}></code> and + * <code><{@link android.R.styleable#HostApduService host-apdu-service}></code> and * <code><{@link android.R.styleable#AidFilter aid-filter}></code>. * <p class="note">The Android platform currently only supports a single * logical channel. diff --git a/core/java/android/nfc/cardemulation/OffHostApduService.java b/core/java/android/nfc/cardemulation/OffHostApduService.java new file mode 100644 index 000000000000..56bb93ee29b8 --- /dev/null +++ b/core/java/android/nfc/cardemulation/OffHostApduService.java @@ -0,0 +1,67 @@ +package android.nfc.cardemulation; + +import android.annotation.SdkConstant; +import android.annotation.SdkConstant.SdkConstantType; +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +/** + * <p>A convenience class that can be extended to implement + * a service that registers ISO7814-4 AIDs that reside off-host, + * for example on an embedded secure element or UICC. + * + * <p>This registration will allow the service to be included + * as an option for handling these AIDs on non-host execution + * environments. The Operating System will take care of correctly + * routing the AIDs, based on which service the user has selected + * to be the handler for an AID. + * + * <p>The service may define additional actions outside of the + * Android namespace that provide further interaction with + * the off-host execution environment. + * + * <p>To tell the platform which ISO7816 application ID (AIDs) + * are present and handled by the app containing this service, + * a {@link #SERVICE_META_DATA} entry must be included in the declaration + * of the service. An example of such a service declaration is shown below: + * <pre> <service android:name=".MyOffHostApduService"> + * <intent-filter> + * <action android:name="android.nfc.OffHostApduService"/> + * </intent-filter> + * <meta-data android:name="android.nfc.OffHostApduService" android:resource="@xml/apduservice.xml"/> + * </service></pre> + * <p>For more details refer to {@link #SERVICE_META_DATA}, + * <code><{@link android.R.styleable#OffHostApduService offhost-apdu-service}></code> and + * <code><{@link android.R.styleable#AidFilter aid-filter}></code>. + */ +public abstract class OffHostApduService extends Service { + /** + * The {@link Intent} that must be declared as handled by the service. + */ + @SdkConstant(SdkConstantType.SERVICE_ACTION) + public static final String SERVICE_INTERFACE = + "android.nfc.OffHostApduService"; + + /** + * The name of the meta-data element that contains + * more information about this service. + */ + public static final String SERVICE_META_DATA = "android.nfc.OffHostApduService"; + + /** + * The Android platform itself will not bind to this service, + * but merely uses its declaration to keep track of what AIDs + * the service is interested in. This information is then used + * to present the user with a list of applications that can handle + * an AID, as well as correctly route those AIDs either to the host (in case + * the user preferred a {@link HostApduService}), or to an off-host + * execution environment (in case the user preferred a {@link OffHostApduService}. + * + * Implementers may define additional actions outside of the + * Android namespace that allow further interactions with + * the off-host execution environment. Such implementations + * would need to override this method. + */ + public abstract IBinder onBind(Intent intent); +}
\ No newline at end of file diff --git a/core/java/android/nfc/cardemulation/SeApduService.java b/core/java/android/nfc/cardemulation/SeApduService.java deleted file mode 100644 index 78f831248f8b..000000000000 --- a/core/java/android/nfc/cardemulation/SeApduService.java +++ /dev/null @@ -1,111 +0,0 @@ -package android.nfc.cardemulation; - -import android.annotation.SdkConstant; -import android.annotation.SdkConstant.SdkConstantType; -import android.app.Service; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Message; -import android.os.Messenger; - -/** - * <p>A convenience class that can be extended to implement - * a service that registers and deals with events for - * ISO7814-4 AIDs that reside on an embedded secure element - * or UICC. - * - * <p>To tell the platform which ISO7816 application ID (AIDs) - * are present on the Secure Element and handled by this service, - * a {@link #SERVICE_META_DATA} entry must be included in the declaration - * of the service. An example of such a service declaration is shown below: - * <pre> <service android:name=".MySeApduService"> - * <intent-filter> - * <action android:name="android.nfc.SeApduService"/> - * </intent-filter> - * <meta-data android:name="android.nfc.SeApduService" android:resource="@xml/apduservice.xml"/> - * </service></pre> - * <p>For more details refer to {@link #SERVICE_META_DATA}, - * <code><{@link android.R.styleable#ApduService apdu-service}></code> and - * <code><{@link android.R.styleable#AidFilter aid-filter}></code>. - */ -public abstract class SeApduService extends Service { - /** - * The {@link Intent} that must be declared as handled by the service. - */ - @SdkConstant(SdkConstantType.SERVICE_ACTION) - public static final String SERVICE_INTERFACE = - "android.nfc.SeApduService"; - - /** - * The name of the meta-data element that contains - * more information about this service. - */ - public static final String SERVICE_META_DATA = "android.nfc.SeApduService"; - - /** - * @hide - */ - public static final int MSG_AID_SELECTED = 0; - - /** - * @hide - */ - public static final int MSG_HCI_TRANSACTION_EVT = 1; - - /** - * @hide - */ - public static final String KEY_AID = "aid"; - - /** - * @hide - */ - public static final String KEY_PARAMETERS = "parameters"; - - final Messenger mMessenger = new Messenger(new MsgHandler()); - - final class MsgHandler extends Handler { - @Override - public void handleMessage(Message msg) { - switch (msg.what){ - case MSG_AID_SELECTED: { - Bundle dataBundle = msg.getData(); - byte[] aid = dataBundle.getByteArray(KEY_AID); - onAidSelected(aid); - break; - } - case MSG_HCI_TRANSACTION_EVT: { - Bundle dataBundle = msg.getData(); - byte[] aid = dataBundle.getByteArray(KEY_AID); - byte[] parameters = dataBundle.getByteArray(KEY_PARAMETERS); - onHciTransactionEvent(aid, parameters); - break; - } - } - } - }; - - @Override - public final IBinder onBind(Intent intent) { - return mMessenger.getBinder(); - } - - /** - * This method is called when an AID that has been registered - * in the manifest of this service has been selected on a - * eSE/UICC. - * @param aid The AID that has been selected - */ - public abstract void onAidSelected(byte[] aid); - - /** - * This method is called when a HCI transaction event has - * been received for an AID that has been registered - * in the manifest of this service. - * @param aid The AID of the application that generated the event - * @param parameters Parameters according to ETSI-TS 102 622 - */ - public abstract void onHciTransactionEvent(byte[] aid, byte[] parameters); -}
\ No newline at end of file diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index ed9f2189fc31..d20a798a3971 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -3192,6 +3192,13 @@ public final class Settings { "input_method_selector_visibility"; /** + * bluetooth HCI snoop log configuration + * @hide + */ + public static final String BLUETOOTH_HCI_LOG = + "bluetooth_hci_log"; + + /** * @deprecated Use {@link android.provider.Settings.Global#DEVICE_PROVISIONED} instead */ @Deprecated diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java index 19f8678a427a..b5b9e1429891 100644 --- a/core/java/android/service/notification/StatusBarNotification.java +++ b/core/java/android/service/notification/StatusBarNotification.java @@ -33,23 +33,12 @@ public class StatusBarNotification implements Parcelable { private final int uid; private final String basePkg; private final int initialPid; - // TODO: make this field private and move callers to an accessor that - // ensures sourceUser is applied. - private final Notification notification; private final UserHandle user; private final long postTime; private final int score; - /** This is temporarily needed for the JB MR1 PDK. - * @hide */ - @Deprecated - public StatusBarNotification(String pkg, int id, String tag, int uid, int initialPid, int score, - Notification notification) { - this(pkg, id, tag, uid, initialPid, score, notification, UserHandle.OWNER); - } - /** @hide */ public StatusBarNotification(String pkg, int id, String tag, int uid, int initialPid, int score, Notification notification, UserHandle user) { diff --git a/core/jni/android/print/android_print_pdf_PdfDocument.cpp b/core/jni/android/print/android_print_pdf_PdfDocument.cpp index 745fe8aa0b79..3daad5c5acc6 100644 --- a/core/jni/android/print/android_print_pdf_PdfDocument.cpp +++ b/core/jni/android/print/android_print_pdf_PdfDocument.cpp @@ -24,6 +24,7 @@ #include "SkRect.h" #include "SkSize.h" #include "CreateJavaOutputStreamAdaptor.h" +#include "JNIHelp.h" namespace android { diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 6a8381f00ace..15edacd7f41f 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2578,29 +2578,36 @@ <attr name="vendor" format="string"/> </declare-styleable> - <!-- Use <code>apdu-service</code> as the root tag of the XML resource that - describes an {@link android.nfc.cardemulation.HostApduService} or - {@link android.nfc.cardemulation.SeApduService} service, which is referenced - from its SERVICE_META_DATA entry. --> - <declare-styleable name="ApduService"> - <!-- Set to true to let the NFC subsystem know that this service implements - a payment instrument. That will allow this service to be enumerated in - a list of payment services, where the user can pick his preferred payment - service. The preferred service will be bound to persistently, to make sure - it can immediately process APDUs without service startup delay. This is vital - for existing payment infrastructure that has very strict timing requirements. --> - <attr name="paymentService" format="boolean" /> - <!-- Short description of the functionality the serivce implements.--> + <!-- Use <code>host-apdu-service</code> as the root tag of the XML resource that + describes an {@link android.nfc.cardemulation.HostApduService} service, which + is referenced from its {@link android.nfc.cardemulation.HostApduService#SERVICE_META_DATA} + entry. --> + <declare-styleable name="HostApduService"> + <!-- Short description of the functionality the service implements. This attribute + is mandatory.--> + <attr name="description" /> + </declare-styleable> + + <!-- Use <code>offhost-apdu-service</code> as the root tag of the XML resource that + describes an {@link android.nfc.cardemulation.OffHostApduService} + service, which is referenced from its + {@link android.nfc.cardemulation.OffHostApduService#SERVICE_META_DATA} entry. --> + <declare-styleable name="OffHostApduService"> + <!-- Short description of the functionality the service implements. This attribute + is mandatory.--> <attr name="description" /> </declare-styleable> - <!-- Specify one or more <code>aid-filter</code> elements inside a <code>apdu-service</code> + <!-- Specify one or more <code>aid-filter</code> elements inside a + <code>host-apdu-service</code> or <code>offhost-apdu-service</code> element to list the ISO7816 Application ID (AIDs) your service can handle.--> <declare-styleable name="AidFilter"> - <!-- The ISO7816 Application ID --> + <!-- The ISO7816 Application ID. This attribute is mandatory. --> <attr name="name" /> - <!-- Short description of what the AID implements.--> + <!-- Short description of what the AID implements. This attribute is mandatory.--> <attr name="description" /> + <!-- Category. This attribute is optional.--> + <attr name="category" format="string" /> </declare-styleable> <declare-styleable name="ActionMenuItemView"> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 7de27058fbff..4a04d3e1898c 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2068,5 +2068,5 @@ <public type="attr" name="sspPattern" /> <public type="attr" name="addPrintersActivity" /> <public type="attr" name="vendor" /> - <public type="attr" name="paymentService" /> + <public type="attr" name="category" /> </resources> diff --git a/services/java/com/android/server/BluetoothManagerService.java b/services/java/com/android/server/BluetoothManagerService.java index f0164cbd0139..a5cf36285648 100644 --- a/services/java/com/android/server/BluetoothManagerService.java +++ b/services/java/com/android/server/BluetoothManagerService.java @@ -788,11 +788,21 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } // else must be SERVICE_IBLUETOOTH //Remove timeout - mHandler.removeMessages(MESSAGE_TIMEOUT_BIND); + mHandler.removeMessages(MESSAGE_TIMEOUT_BIND); mBinding = false; mBluetooth = IBluetooth.Stub.asInterface(service); + try { + boolean enableHciSnoopLog = (Settings.Secure.getInt(mContentResolver, + Settings.Secure.BLUETOOTH_HCI_LOG, 0) == 1); + if (!mBluetooth.configHciSnoopLog(enableHciSnoopLog)) { + Log.e(TAG,"IBluetooth.configHciSnoopLog return false"); + } + } catch (RemoteException e) { + Log.e(TAG,"Unable to call configHciSnoopLog", e); + } + if (mConnection.isGetNameAddressOnly()) { //Request GET NAME AND ADDRESS Message getMsg = mHandler.obtainMessage(MESSAGE_GET_NAME_AND_ADDRESS); diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index f5e75f978f09..b341693245b6 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -235,7 +235,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { private Object mDnsLock = new Object(); private int mNumDnsEntries; - private boolean mDnsOverridden = false; private boolean mTestMode; private static ConnectivityService sServiceInstance; @@ -310,28 +309,22 @@ public class ConnectivityService extends IConnectivityManager.Stub { private static final int EVENT_SET_DEPENDENCY_MET = 10; /** - * used internally to restore DNS properties back to the - * default network - */ - private static final int EVENT_RESTORE_DNS = 11; - - /** * used internally to send a sticky broadcast delayed. */ - private static final int EVENT_SEND_STICKY_BROADCAST_INTENT = 12; + private static final int EVENT_SEND_STICKY_BROADCAST_INTENT = 11; /** * Used internally to * {@link NetworkStateTracker#setPolicyDataEnable(boolean)}. */ - private static final int EVENT_SET_POLICY_DATA_ENABLE = 13; + private static final int EVENT_SET_POLICY_DATA_ENABLE = 12; - private static final int EVENT_VPN_STATE_CHANGED = 14; + private static final int EVENT_VPN_STATE_CHANGED = 13; /** * Used internally to disable fail fast of mobile data */ - private static final int EVENT_ENABLE_FAIL_FAST_MOBILE_DATA = 15; + private static final int EVENT_ENABLE_FAIL_FAST_MOBILE_DATA = 14; /** Handler used for internal events. */ private InternalHandler mHandler; @@ -2661,9 +2654,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { if (mNetConfigs[netType].isDefault()) { String network = nt.getNetworkInfo().getTypeName(); synchronized (mDnsLock) { - if (!mDnsOverridden) { - updateDnsLocked(network, p.getInterfaceName(), dnses, p.getDomains(), true); - } + updateDnsLocked(network, p.getInterfaceName(), dnses, p.getDomains(), true); } } else { try { @@ -2916,13 +2907,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { handleSetDependencyMet(msg.arg2, met); break; } - case EVENT_RESTORE_DNS: - { - if (mActiveDefaultNetwork != -1) { - handleDnsConfigurationChange(mActiveDefaultNetwork); - } - break; - } case EVENT_SEND_STICKY_BROADCAST_INTENT: { Intent intent = (Intent)msg.obj; @@ -3562,12 +3546,6 @@ public class ConnectivityService extends IConnectivityManager.Stub { } public void restore() { - synchronized (mDnsLock) { - if (mDnsOverridden) { - mDnsOverridden = false; - mHandler.sendEmptyMessage(EVENT_RESTORE_DNS); - } - } synchronized (mProxyLock) { mDefaultProxyDisabled = false; if (mGlobalProxy == null && mDefaultProxy != null) { diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index f763068d980a..9a5026d0ebc2 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -6950,11 +6950,19 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { final DisplayContent displayContent = getDefaultDisplayContentLocked(); readForcedDisplaySizeAndDensityLocked(displayContent); - mDisplayReady = true; + } + + try { + mActivityManager.updateConfiguration(null); + } catch (RemoteException e) { + } + + synchronized(mWindowMap) { mIsTouchDevice = mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_TOUCHSCREEN); + final DisplayContent displayContent = getDefaultDisplayContentLocked(); mPolicy.setInitialDisplaySize(displayContent.getDisplay(), displayContent.mInitialDisplayWidth, displayContent.mInitialDisplayHeight, |