Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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.chrome.browser; | 5 package org.chromium.chrome.browser; |
| 6 | 6 |
| 7 import android.Manifest; | 7 import android.Manifest; |
| 8 import android.app.Activity; | 8 import android.app.Activity; |
| 9 import android.bluetooth.BluetoothAdapter; | 9 import android.bluetooth.BluetoothAdapter; |
| 10 import android.content.BroadcastReceiver; | 10 import android.content.BroadcastReceiver; |
| 11 import android.content.Context; | 11 import android.content.Context; |
| 12 import android.content.Intent; | 12 import android.content.Intent; |
| 13 import android.content.IntentFilter; | 13 import android.content.IntentFilter; |
| 14 import android.content.res.Resources; | 14 import android.content.res.Resources; |
| 15 import android.graphics.drawable.Drawable; | 15 import android.graphics.drawable.Drawable; |
| 16 import android.graphics.drawable.LevelListDrawable; | |
| 16 import android.location.LocationManager; | 17 import android.location.LocationManager; |
| 17 import android.support.graphics.drawable.VectorDrawableCompat; | 18 import android.support.graphics.drawable.VectorDrawableCompat; |
| 18 import android.support.v4.graphics.drawable.DrawableCompat; | 19 import android.support.v4.graphics.drawable.DrawableCompat; |
| 19 import android.text.SpannableString; | 20 import android.text.SpannableString; |
| 20 import android.text.TextUtils; | 21 import android.text.TextUtils; |
| 21 import android.view.View; | 22 import android.view.View; |
| 22 | 23 |
| 23 import org.chromium.base.ApiCompatibilityUtils; | 24 import org.chromium.base.ApiCompatibilityUtils; |
| 24 import org.chromium.base.Log; | 25 import org.chromium.base.Log; |
| 25 import org.chromium.base.VisibleForTesting; | 26 import org.chromium.base.VisibleForTesting; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 | 71 |
| 71 // The security level of the connection to the site wanting to pair with the | 72 // The security level of the connection to the site wanting to pair with the |
| 72 // bluetooth devices. For valid values see SecurityStateModel::SecurityLevel . | 73 // bluetooth devices. For valid values see SecurityStateModel::SecurityLevel . |
| 73 int mSecurityLevel; | 74 int mSecurityLevel; |
| 74 | 75 |
| 75 @VisibleForTesting | 76 @VisibleForTesting |
| 76 Drawable mConnectedIcon; | 77 Drawable mConnectedIcon; |
| 77 @VisibleForTesting | 78 @VisibleForTesting |
| 78 String mConnectedIconDescription; | 79 String mConnectedIconDescription; |
| 79 @VisibleForTesting | 80 @VisibleForTesting |
| 80 Drawable[] mSignalStrengthLevelIcon; | 81 LevelListDrawable mSignalStrengthLevelIcon; |
| 81 | 82 |
| 82 // A pointer back to the native part of the implementation for this dialog. | 83 // A pointer back to the native part of the implementation for this dialog. |
| 83 long mNativeBluetoothChooserDialogPtr; | 84 long mNativeBluetoothChooserDialogPtr; |
| 84 | 85 |
| 85 // Used to keep track of when the Mode Changed Receiver is registered. | 86 // Used to keep track of when the Mode Changed Receiver is registered. |
| 86 boolean mIsLocationModeChangedReceiverRegistered; | 87 boolean mIsLocationModeChangedReceiverRegistered; |
| 87 | 88 |
| 88 // The local device Bluetooth adapter. | 89 // The local device Bluetooth adapter. |
| 89 private final BluetoothAdapter mAdapter; | 90 private final BluetoothAdapter mAdapter; |
| 90 | 91 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 127 assert mActivity != null; | 128 assert mActivity != null; |
| 128 mOrigin = origin; | 129 mOrigin = origin; |
| 129 mSecurityLevel = securityLevel; | 130 mSecurityLevel = securityLevel; |
| 130 mNativeBluetoothChooserDialogPtr = nativeBluetoothChooserDialogPtr; | 131 mNativeBluetoothChooserDialogPtr = nativeBluetoothChooserDialogPtr; |
| 131 mAdapter = BluetoothAdapter.getDefaultAdapter(); | 132 mAdapter = BluetoothAdapter.getDefaultAdapter(); |
| 132 | 133 |
| 133 // Initialize icons. | 134 // Initialize icons. |
| 134 mConnectedIcon = getIconWithRowIconColorStateList(R.drawable.ic_bluetoot h_connected); | 135 mConnectedIcon = getIconWithRowIconColorStateList(R.drawable.ic_bluetoot h_connected); |
| 135 mConnectedIconDescription = mActivity.getString(R.string.bluetooth_devic e_connected); | 136 mConnectedIconDescription = mActivity.getString(R.string.bluetooth_devic e_connected); |
| 136 | 137 |
| 137 mSignalStrengthLevelIcon = new Drawable[] { | 138 mSignalStrengthLevelIcon = new LevelListDrawable(); |
| 138 getIconWithRowIconColorStateList(R.drawable.ic_signal_cellular_0 _bar), | 139 mSignalStrengthLevelIcon.addLevel( |
| 139 getIconWithRowIconColorStateList(R.drawable.ic_signal_cellular_1 _bar), | 140 0, 0, getIconWithRowIconColorStateList(R.drawable.ic_signal_cell ular_0_bar)); |
| 140 getIconWithRowIconColorStateList(R.drawable.ic_signal_cellular_2 _bar), | 141 mSignalStrengthLevelIcon.addLevel( |
| 141 getIconWithRowIconColorStateList(R.drawable.ic_signal_cellular_3 _bar), | 142 1, 1, getIconWithRowIconColorStateList(R.drawable.ic_signal_cell ular_1_bar)); |
| 142 getIconWithRowIconColorStateList(R.drawable.ic_signal_cellular_4 _bar)}; | 143 mSignalStrengthLevelIcon.addLevel( |
| 144 2, 2, getIconWithRowIconColorStateList(R.drawable.ic_signal_cell ular_2_bar)); | |
| 145 mSignalStrengthLevelIcon.addLevel( | |
| 146 3, 3, getIconWithRowIconColorStateList(R.drawable.ic_signal_cell ular_3_bar)); | |
| 147 mSignalStrengthLevelIcon.addLevel( | |
| 148 4, 4, getIconWithRowIconColorStateList(R.drawable.ic_signal_cell ular_4_bar)); | |
| 143 | 149 |
| 144 if (mAdapter == null) { | 150 if (mAdapter == null) { |
| 145 Log.i(TAG, "BluetoothChooserDialog: Default Bluetooth adapter not fo und."); | 151 Log.i(TAG, "BluetoothChooserDialog: Default Bluetooth adapter not fo und."); |
| 146 } | 152 } |
| 147 mAdapterOffStatus = | 153 mAdapterOffStatus = |
| 148 SpanApplier.applySpans(mActivity.getString(R.string.bluetooth_ad apter_off_help), | 154 SpanApplier.applySpans(mActivity.getString(R.string.bluetooth_ad apter_off_help), |
| 149 new SpanInfo("<link>", "</link>", | 155 new SpanInfo("<link>", "</link>", |
| 150 new BluetoothClickableSpan(LinkType.ADAPTER_OFF_ HELP, mActivity))); | 156 new BluetoothClickableSpan(LinkType.ADAPTER_OFF_ HELP, mActivity))); |
| 151 } | 157 } |
| 152 | 158 |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 386 @VisibleForTesting | 392 @VisibleForTesting |
| 387 @CalledByNative | 393 @CalledByNative |
| 388 void addOrUpdateDevice( | 394 void addOrUpdateDevice( |
| 389 String deviceId, String deviceName, boolean isGATTConnected, int sig nalStrengthLevel) { | 395 String deviceId, String deviceName, boolean isGATTConnected, int sig nalStrengthLevel) { |
| 390 Drawable icon = null; | 396 Drawable icon = null; |
| 391 String iconDescription = null; | 397 String iconDescription = null; |
| 392 if (isGATTConnected) { | 398 if (isGATTConnected) { |
| 393 icon = mConnectedIcon.getConstantState().newDrawable(); | 399 icon = mConnectedIcon.getConstantState().newDrawable(); |
| 394 iconDescription = mConnectedIconDescription; | 400 iconDescription = mConnectedIconDescription; |
| 395 } else if (signalStrengthLevel != -1) { | 401 } else if (signalStrengthLevel != -1) { |
| 396 icon = mSignalStrengthLevelIcon[signalStrengthLevel].getConstantStat e().newDrawable(); | 402 icon = mSignalStrengthLevelIcon.getConstantState().newDrawable(); |
|
ortuno
2017/04/18 06:57:07
Calling newDrawable on a LevelListDrawable creates
David Trainor- moved to gerrit
2017/04/19 21:32:06
Ah yeah it still caches the internal wrapped drawa
| |
| 403 icon.setLevel(signalStrengthLevel); | |
| 397 iconDescription = mActivity.getResources().getQuantityString( | 404 iconDescription = mActivity.getResources().getQuantityString( |
| 398 R.plurals.signal_strength_level_n_bars, signalStrengthLevel, | 405 R.plurals.signal_strength_level_n_bars, signalStrengthLevel, |
| 399 signalStrengthLevel); | 406 signalStrengthLevel); |
| 400 } | 407 } |
| 401 | 408 |
| 402 mItemChooserDialog.addOrUpdateItem(deviceId, deviceName, icon, iconDescr iption); | 409 mItemChooserDialog.addOrUpdateItem(deviceId, deviceName, icon, iconDescr iption); |
| 403 } | 410 } |
| 404 | 411 |
| 405 @VisibleForTesting | 412 @VisibleForTesting |
| 406 @CalledByNative | 413 @CalledByNative |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 453 @VisibleForTesting | 460 @VisibleForTesting |
| 454 native void nativeRestartSearch(long nativeBluetoothChooserAndroid); | 461 native void nativeRestartSearch(long nativeBluetoothChooserAndroid); |
| 455 // Help links. | 462 // Help links. |
| 456 @VisibleForTesting | 463 @VisibleForTesting |
| 457 native void nativeShowBluetoothOverviewLink(long nativeBluetoothChooserAndro id); | 464 native void nativeShowBluetoothOverviewLink(long nativeBluetoothChooserAndro id); |
| 458 @VisibleForTesting | 465 @VisibleForTesting |
| 459 native void nativeShowBluetoothAdapterOffLink(long nativeBluetoothChooserAnd roid); | 466 native void nativeShowBluetoothAdapterOffLink(long nativeBluetoothChooserAnd roid); |
| 460 @VisibleForTesting | 467 @VisibleForTesting |
| 461 native void nativeShowNeedLocationPermissionLink(long nativeBluetoothChooser Android); | 468 native void nativeShowNeedLocationPermissionLink(long nativeBluetoothChooser Android); |
| 462 } | 469 } |
| OLD | NEW |