Merge "Allow CDM version v19 or later" into main
This commit is contained in:
@@ -23,6 +23,8 @@ import android.util.Log;
|
|||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
@@ -34,6 +36,8 @@ import com.android.settings.media_drm.Flags;
|
|||||||
*/
|
*/
|
||||||
public class ForceSwSecureCryptoFallbackPreferenceController extends TogglePreferenceController {
|
public class ForceSwSecureCryptoFallbackPreferenceController extends TogglePreferenceController {
|
||||||
private static final String TAG = "ForceSwSecureCryptoFallbackPreferenceController";
|
private static final String TAG = "ForceSwSecureCryptoFallbackPreferenceController";
|
||||||
|
private static final UUID WIDEVINE_UUID =
|
||||||
|
new UUID(0xEDEF8BA979D64ACEL, 0xA3C827DCD51D21EDL);
|
||||||
|
|
||||||
public ForceSwSecureCryptoFallbackPreferenceController(Context context, String preferenceKey) {
|
public ForceSwSecureCryptoFallbackPreferenceController(Context context, String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
@@ -52,15 +56,24 @@ public class ForceSwSecureCryptoFallbackPreferenceController extends TogglePrefe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
|
boolean isEnable = false;
|
||||||
if (Flags.forceL3Enabled()) {
|
if (Flags.forceL3Enabled()) {
|
||||||
preference.setEnabled(true);
|
try (MediaDrm drm = new MediaDrm(WIDEVINE_UUID)) {
|
||||||
Log.i(TAG, "forceL3Enabled is on");
|
String version = drm.getPropertyString(MediaDrm.PROPERTY_VERSION);
|
||||||
} else {
|
if (Integer.parseInt(version.split("\\.", 2)[0]) >= 19) {
|
||||||
preference.setEnabled(false);
|
isEnable = true;
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Log.e(TAG, "An exception occurred:", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
preference.setEnabled(isEnable);
|
||||||
|
if (!isEnable) {
|
||||||
// In case of flag rollback, the controller should be unchecked.
|
// In case of flag rollback, the controller should be unchecked.
|
||||||
WidevineProperties.forcel3_enabled(false);
|
WidevineProperties.forcel3_enabled(false);
|
||||||
Log.i(TAG, "forceL3Enabled is off");
|
|
||||||
}
|
}
|
||||||
|
Log.i(TAG, "Force software crypto is " + isEnable);
|
||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -137,4 +137,22 @@ public class ForceSwSecureCryptoFallbackPreferenceControllerTest {
|
|||||||
assumeNoException(ex);
|
assumeNoException(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateState_checkWhenWidevineReady() throws Exception {
|
||||||
|
try (MediaDrm drm = new MediaDrm(WIDEVINE_UUID)) {
|
||||||
|
if (drm.getPropertyString("securityLevel").equals("L1")) {
|
||||||
|
String version = drm.getPropertyString(MediaDrm.PROPERTY_VERSION);
|
||||||
|
mSetFlagsRule.enableFlags(Flags.FLAG_FORCE_L3_ENABLED);
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
if (Integer.parseInt(version.split("\\.", 2)[0]) >= 19) {
|
||||||
|
assertThat(mPreference.isEnabled()).isTrue();
|
||||||
|
} else {
|
||||||
|
assertThat(mPreference.isEnabled()).isFalse();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (UnsupportedSchemeException ex) {
|
||||||
|
assumeNoException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user