| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.ui.display; | 5 package org.chromium.ui.display; |
| 6 | 6 |
| 7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
| 8 import android.content.ComponentCallbacks; | 8 import android.content.ComponentCallbacks; |
| 9 import android.content.Context; | 9 import android.content.Context; |
| 10 import android.content.res.Configuration; | 10 import android.content.res.Configuration; |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 | 145 |
| 146 @Override | 146 @Override |
| 147 public void stopAccurateListening() { | 147 public void stopAccurateListening() { |
| 148 // Always accurate. Do nothing. | 148 // Always accurate. Do nothing. |
| 149 } | 149 } |
| 150 | 150 |
| 151 // DisplayListener implementation: | 151 // DisplayListener implementation: |
| 152 | 152 |
| 153 @Override | 153 @Override |
| 154 public void onDisplayAdded(int sdkDisplayId) { | 154 public void onDisplayAdded(int sdkDisplayId) { |
| 155 addDisplay(getDisplayManager().getDisplay(sdkDisplayId)); | 155 // DisplayAndroid is added lazily on first use. This is to workaroun
d corner case |
| 156 // bug where DisplayManager.getDisplay(sdkDisplayId) returning null
here. |
| 156 } | 157 } |
| 157 | 158 |
| 158 @Override | 159 @Override |
| 159 public void onDisplayRemoved(int sdkDisplayId) { | 160 public void onDisplayRemoved(int sdkDisplayId) { |
| 160 mIdMap.remove(sdkDisplayId); | 161 mIdMap.remove(sdkDisplayId); |
| 161 } | 162 } |
| 162 | 163 |
| 163 @Override | 164 @Override |
| 164 public void onDisplayChanged(int sdkDisplayId) { | 165 public void onDisplayChanged(int sdkDisplayId) { |
| 165 updateDeviceDisplayInfo(); | 166 updateDeviceDisplayInfo(); |
| 166 mIdMap.get(sdkDisplayId) | 167 DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId); |
| 167 .updateFromDisplay(getDisplayManager().getDisplay(sdkDisplay
Id)); | 168 if (displayAndroid != null) { |
| 169 displayAndroid.updateFromDisplay(getDisplayManager().getDisplay(
sdkDisplayId)); |
| 170 } |
| 168 } | 171 } |
| 169 } | 172 } |
| 170 | 173 |
| 171 private static DisplayAndroidManager sDisplayAndroidManager; | 174 private static DisplayAndroidManager sDisplayAndroidManager; |
| 172 | 175 |
| 173 private SparseArray<DisplayAndroid> mIdMap; | 176 private SparseArray<DisplayAndroid> mIdMap; |
| 174 private final DisplayListenerBackend mBackend; | 177 private final DisplayListenerBackend mBackend; |
| 175 | 178 |
| 176 /* package */ static DisplayAndroidManager getInstance() { | 179 /* package */ static DisplayAndroidManager getInstance() { |
| 177 if (sDisplayAndroidManager == null) { | 180 if (sDisplayAndroidManager == null) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 197 private static DisplayManager getDisplayManager() { | 200 private static DisplayManager getDisplayManager() { |
| 198 return (DisplayManager) getContext().getSystemService(Context.DISPLAY_SE
RVICE); | 201 return (DisplayManager) getContext().getSystemService(Context.DISPLAY_SE
RVICE); |
| 199 } | 202 } |
| 200 | 203 |
| 201 private static void updateDeviceDisplayInfo() { | 204 private static void updateDeviceDisplayInfo() { |
| 202 DeviceDisplayInfo.create(getContext()).updateNativeSharedDisplayInfo(); | 205 DeviceDisplayInfo.create(getContext()).updateNativeSharedDisplayInfo(); |
| 203 } | 206 } |
| 204 | 207 |
| 205 private DisplayAndroidManager() { | 208 private DisplayAndroidManager() { |
| 206 mIdMap = new SparseArray<>(); | 209 mIdMap = new SparseArray<>(); |
| 207 | |
| 208 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { | 210 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { |
| 209 mBackend = new DisplayListenerBackendImpl(); | 211 mBackend = new DisplayListenerBackendImpl(); |
| 210 for (Display display : getDisplayManager().getDisplays()) { | |
| 211 addDisplay(display); | |
| 212 } | |
| 213 } else { | 212 } else { |
| 214 Display display = getDisplayFromContext(getContext()); | 213 Display display = getDisplayFromContext(getContext()); |
| 215 mBackend = new DisplayListenerAPI16(display.getDisplayId()); | 214 mBackend = new DisplayListenerAPI16(display.getDisplayId()); |
| 216 addDisplay(display); // Note this display is never removed. | 215 addDisplay(display); // Note this display is never removed. |
| 217 } | 216 } |
| 218 mBackend.startListening(); | 217 mBackend.startListening(); |
| 219 } | 218 } |
| 220 | 219 |
| 221 /* package */ DisplayAndroid getDisplayAndroid(int sdkDisplayId) { | 220 /* package */ DisplayAndroid getDisplayAndroid(Display display) { |
| 222 return mIdMap.get(sdkDisplayId); | 221 int sdkDisplayId = display.getDisplayId(); |
| 222 DisplayAndroid displayAndroid = mIdMap.get(sdkDisplayId); |
| 223 if (displayAndroid == null) { |
| 224 displayAndroid = addDisplay(display); |
| 225 } |
| 226 return displayAndroid; |
| 223 } | 227 } |
| 224 | 228 |
| 225 /* package */ void startAccurateListening() { | 229 /* package */ void startAccurateListening() { |
| 226 mBackend.startAccurateListening(); | 230 mBackend.startAccurateListening(); |
| 227 } | 231 } |
| 228 | 232 |
| 229 /* package */ void stopAccurateListening() { | 233 /* package */ void stopAccurateListening() { |
| 230 mBackend.stopAccurateListening(); | 234 mBackend.stopAccurateListening(); |
| 231 } | 235 } |
| 232 | 236 |
| 233 private void addDisplay(Display display) { | 237 private DisplayAndroid addDisplay(Display display) { |
| 234 int sdkDisplayId = display.getDisplayId(); | 238 int sdkDisplayId = display.getDisplayId(); |
| 235 mIdMap.put(sdkDisplayId, new DisplayAndroid(display)); | 239 DisplayAndroid displayAndroid = new DisplayAndroid(display); |
| 240 mIdMap.put(sdkDisplayId, displayAndroid); |
| 241 return displayAndroid; |
| 236 } | 242 } |
| 237 } | 243 } |
| OLD | NEW |