DisplayAdjustments.java revision 48d0d1886731ff19ed3fb47a5997be5df0d1bba8
148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner/* 248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * Copyright (C) 2011 The Android Open Source Project 348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * 448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * Licensed under the Apache License, Version 2.0 (the "License"); 548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * you may not use this file except in compliance with the License. 648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * You may obtain a copy of the License at 748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * 848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * http://www.apache.org/licenses/LICENSE-2.0 948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * 1048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * Unless required by applicable law or agreed to in writing, software 1148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * distributed under the License is distributed on an "AS IS" BASIS, 1248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * See the License for the specific language governing permissions and 1448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * limitations under the License. 1548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner */ 1648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 1748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerpackage android.view; 1848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 1948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerimport android.content.res.CompatibilityInfo; 2048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerimport android.os.IBinder; 2148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 2248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerimport com.android.internal.util.Objects; 2348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 2448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner/** @hide */ 2548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerpublic class DisplayAdjustments { 2648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public static final boolean DEVELOPMENT_RESOURCES_DEPEND_ON_ACTIVITY_TOKEN = false; 2748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 2848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public static final DisplayAdjustments DEFAULT_DISPLAY_ADJUSTMENTS = new DisplayAdjustments(); 2948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 3048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner private volatile CompatibilityInfo mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; 3148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner private volatile IBinder mActivityToken; 3248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 3348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public DisplayAdjustments() { 3448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 3548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 3648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public DisplayAdjustments(IBinder token) { 3748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner mActivityToken = token; 3848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 3948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 4048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public DisplayAdjustments(CompatibilityInfo compatInfo, IBinder token) { 4148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner setCompatibilityInfo(compatInfo); 4248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner mActivityToken = token; 4348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 4448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 4548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public void setCompatibilityInfo(CompatibilityInfo compatInfo) { 4648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (this == DEFAULT_DISPLAY_ADJUSTMENTS) { 4748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner throw new IllegalArgumentException( 4848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner "setCompatbilityInfo: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS"); 4948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 5048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (compatInfo != null && (compatInfo.isScalingRequired() 5148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner || !compatInfo.supportsScreen())) { 5248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner mCompatInfo = compatInfo; 5348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } else { 5448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; 5548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 5648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 5748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 5848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public CompatibilityInfo getCompatibilityInfo() { 5948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return mCompatInfo; 6048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 6148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 6248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public void setActivityToken(IBinder token) { 6348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (this == DEFAULT_DISPLAY_ADJUSTMENTS) { 6448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner throw new IllegalArgumentException( 6548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner "setActivityToken: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS"); 6648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 6748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner mActivityToken = token; 6848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 6948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 7048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public IBinder getActivityToken() { 7148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return mActivityToken; 7248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 7348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 7448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner @Override 7548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public int hashCode() { 7648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner int hash = 17; 7748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner hash = hash * 31 + mCompatInfo.hashCode(); 7848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (DEVELOPMENT_RESOURCES_DEPEND_ON_ACTIVITY_TOKEN) { 7948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner hash = hash * 31 + (mActivityToken == null ? 0 : mActivityToken.hashCode()); 8048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 8148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return hash; 8248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 8348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 8448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner @Override 8548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public boolean equals(Object o) { 8648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (!(o instanceof DisplayAdjustments)) { 8748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return false; 8848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 8948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner DisplayAdjustments daj = (DisplayAdjustments)o; 9048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return Objects.equal(daj.mCompatInfo, mCompatInfo) && 9148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner Objects.equal(daj.mActivityToken, mActivityToken); 9248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 9348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner} 94