mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
Bug 1614894 - Remove autoplayDefault. r=snorp,esawin,droeh
The pref does not make a lot more sense now that we check autoplay on every session. Differential Revision: https://phabricator.services.mozilla.com/D63273 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
f8c4745805
commit
45e67578d0
@ -497,7 +497,6 @@ package org.mozilla.geckoview {
|
|||||||
method public boolean getAboutConfigEnabled();
|
method public boolean getAboutConfigEnabled();
|
||||||
method @NonNull public String[] getArguments();
|
method @NonNull public String[] getArguments();
|
||||||
method public boolean getAutomaticFontSizeAdjustment();
|
method public boolean getAutomaticFontSizeAdjustment();
|
||||||
method public int getAutoplayDefault();
|
|
||||||
method @Nullable public String getConfigFilePath();
|
method @Nullable public String getConfigFilePath();
|
||||||
method public boolean getConsoleOutputEnabled();
|
method public boolean getConsoleOutputEnabled();
|
||||||
method @NonNull public ContentBlocking.Settings getContentBlocking();
|
method @NonNull public ContentBlocking.Settings getContentBlocking();
|
||||||
@ -524,7 +523,6 @@ package org.mozilla.geckoview {
|
|||||||
method public boolean getWebFontsEnabled();
|
method public boolean getWebFontsEnabled();
|
||||||
method @NonNull public GeckoRuntimeSettings setAboutConfigEnabled(boolean);
|
method @NonNull public GeckoRuntimeSettings setAboutConfigEnabled(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings setAutomaticFontSizeAdjustment(boolean);
|
method @NonNull public GeckoRuntimeSettings setAutomaticFontSizeAdjustment(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings setAutoplayDefault(int);
|
|
||||||
method @NonNull public GeckoRuntimeSettings setConsoleOutputEnabled(boolean);
|
method @NonNull public GeckoRuntimeSettings setConsoleOutputEnabled(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings setDoubleTapZoomingEnabled(boolean);
|
method @NonNull public GeckoRuntimeSettings setDoubleTapZoomingEnabled(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings setFontInflationEnabled(boolean);
|
method @NonNull public GeckoRuntimeSettings setFontInflationEnabled(boolean);
|
||||||
@ -537,8 +535,6 @@ package org.mozilla.geckoview {
|
|||||||
method @NonNull public GeckoRuntimeSettings setPreferredColorScheme(int);
|
method @NonNull public GeckoRuntimeSettings setPreferredColorScheme(int);
|
||||||
method @NonNull public GeckoRuntimeSettings setRemoteDebuggingEnabled(boolean);
|
method @NonNull public GeckoRuntimeSettings setRemoteDebuggingEnabled(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings setWebFontsEnabled(boolean);
|
method @NonNull public GeckoRuntimeSettings setWebFontsEnabled(boolean);
|
||||||
field public static final int AUTOPLAY_DEFAULT_ALLOWED = 0;
|
|
||||||
field public static final int AUTOPLAY_DEFAULT_BLOCKED = 1;
|
|
||||||
field public static final int COLOR_SCHEME_DARK = 1;
|
field public static final int COLOR_SCHEME_DARK = 1;
|
||||||
field public static final int COLOR_SCHEME_LIGHT = 0;
|
field public static final int COLOR_SCHEME_LIGHT = 0;
|
||||||
field public static final int COLOR_SCHEME_SYSTEM = -1;
|
field public static final int COLOR_SCHEME_SYSTEM = -1;
|
||||||
@ -550,7 +546,6 @@ package org.mozilla.geckoview {
|
|||||||
method @NonNull public GeckoRuntimeSettings.Builder aboutConfigEnabled(boolean);
|
method @NonNull public GeckoRuntimeSettings.Builder aboutConfigEnabled(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings.Builder arguments(@NonNull String[]);
|
method @NonNull public GeckoRuntimeSettings.Builder arguments(@NonNull String[]);
|
||||||
method @NonNull public GeckoRuntimeSettings.Builder automaticFontSizeAdjustment(boolean);
|
method @NonNull public GeckoRuntimeSettings.Builder automaticFontSizeAdjustment(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings.Builder autoplayDefault(int);
|
|
||||||
method @NonNull public GeckoRuntimeSettings.Builder configFilePath(@Nullable String);
|
method @NonNull public GeckoRuntimeSettings.Builder configFilePath(@Nullable String);
|
||||||
method @NonNull public GeckoRuntimeSettings.Builder consoleOutput(boolean);
|
method @NonNull public GeckoRuntimeSettings.Builder consoleOutput(boolean);
|
||||||
method @NonNull public GeckoRuntimeSettings.Builder contentBlocking(@NonNull ContentBlocking.Settings);
|
method @NonNull public GeckoRuntimeSettings.Builder contentBlocking(@NonNull ContentBlocking.Settings);
|
||||||
|
@ -411,54 +411,4 @@ class MediaElementTest : BaseSessionTest() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test fun autoplayBlocked() {
|
|
||||||
sessionRule.runtime.settings.autoplayDefault = GeckoRuntimeSettings.AUTOPLAY_DEFAULT_BLOCKED
|
|
||||||
|
|
||||||
val media = waitUntilVideoReadyNoPrefs(AUTOPLAY_PATH)
|
|
||||||
val promise = sessionRule.evaluatePromiseJS(mainSession,
|
|
||||||
"document.querySelector('video').play()")
|
|
||||||
var exceptionCaught = false
|
|
||||||
try {
|
|
||||||
val result = promise.value as Boolean
|
|
||||||
assertThat("Promise should not resolve", result, equalTo(false))
|
|
||||||
} catch (e: GeckoSessionTestRule.RejectedPromiseException) {
|
|
||||||
exceptionCaught = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
assertThat("video.play() failed with exception", exceptionCaught, equalTo(true))
|
|
||||||
media.play()
|
|
||||||
/*
|
|
||||||
// Fails due to bug 1524092
|
|
||||||
waitForPlaybackStateChange(MediaElement.MEDIA_STATE_PLAY)
|
|
||||||
waitForPlaybackStateChange(MediaElement.MEDIA_STATE_PLAYING)
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test fun autoplayAllowed() {
|
|
||||||
sessionRule.runtime.settings.autoplayDefault = GeckoRuntimeSettings.AUTOPLAY_DEFAULT_ALLOWED
|
|
||||||
|
|
||||||
val media = waitUntilVideoReadyNoPrefs(VIDEO_WEBM_PATH)
|
|
||||||
val promise = sessionRule.evaluatePromiseJS(mainSession,
|
|
||||||
"document.querySelector('video').play()")
|
|
||||||
var exceptionCaught = false
|
|
||||||
try {
|
|
||||||
promise.value
|
|
||||||
} catch (e: GeckoSessionTestRule.RejectedPromiseException) {
|
|
||||||
exceptionCaught = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
assertThat("video.play() did not fail", exceptionCaught, equalTo(false))
|
|
||||||
waitForPlaybackStateChange(MediaElement.MEDIA_STATE_PLAY)
|
|
||||||
waitForPlaybackStateChange(MediaElement.MEDIA_STATE_PLAYING)
|
|
||||||
media.pause()
|
|
||||||
|
|
||||||
media.play()
|
|
||||||
waitForPlaybackStateChange(MediaElement.MEDIA_STATE_PLAY)
|
|
||||||
waitForPlaybackStateChange(MediaElement.MEDIA_STATE_PLAYING)
|
|
||||||
|
|
||||||
// Restore default runtime settings
|
|
||||||
sessionRule.runtime.settings.autoplayDefault = GeckoRuntimeSettings.AUTOPLAY_DEFAULT_BLOCKED
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -266,7 +266,6 @@ class PermissionDelegateTest : BaseSessionTest() {
|
|||||||
// The profile used in automation sets this to false, so we need to hack it back to true here.
|
// The profile used in automation sets this to false, so we need to hack it back to true here.
|
||||||
sessionRule.setPrefsUntilTestEnd(mapOf(
|
sessionRule.setPrefsUntilTestEnd(mapOf(
|
||||||
"media.geckoview.autoplay.request" to true))
|
"media.geckoview.autoplay.request" to true))
|
||||||
sessionRule.runtime.settings.autoplayDefault = GeckoRuntimeSettings.AUTOPLAY_DEFAULT_BLOCKED
|
|
||||||
|
|
||||||
mainSession.loadTestPath(AUTOPLAY_PATH)
|
mainSession.loadTestPath(AUTOPLAY_PATH)
|
||||||
|
|
||||||
|
@ -245,8 +245,7 @@ public class TestRunnerActivity extends Activity {
|
|||||||
.arguments(new String[] { "-purgecaches" })
|
.arguments(new String[] { "-purgecaches" })
|
||||||
.displayDpiOverride(160)
|
.displayDpiOverride(160)
|
||||||
.displayDensityOverride(1.0f)
|
.displayDensityOverride(1.0f)
|
||||||
.remoteDebuggingEnabled(true)
|
.remoteDebuggingEnabled(true);
|
||||||
.autoplayDefault(GeckoRuntimeSettings.AUTOPLAY_DEFAULT_ALLOWED);
|
|
||||||
|
|
||||||
final Bundle extras = intent.getExtras();
|
final Bundle extras = intent.getExtras();
|
||||||
if (extras != null) {
|
if (extras != null) {
|
||||||
|
@ -319,17 +319,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets video autoplay mode.
|
|
||||||
* May be either {@link GeckoRuntimeSettings#AUTOPLAY_DEFAULT_ALLOWED} or {@link GeckoRuntimeSettings#AUTOPLAY_DEFAULT_BLOCKED}
|
|
||||||
* @param autoplay Allows or blocks video autoplay.
|
|
||||||
* @return This Builder instance.
|
|
||||||
*/
|
|
||||||
public @NonNull Builder autoplayDefault(final @AutoplayDefault int autoplay) {
|
|
||||||
getSettings().mAutoplayDefault.set(autoplay);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the preferred color scheme override for web content.
|
* Sets the preferred color scheme override for web content.
|
||||||
*
|
*
|
||||||
@ -450,8 +439,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
|
|||||||
"browser.display.use_document_fonts", 1);
|
"browser.display.use_document_fonts", 1);
|
||||||
/* package */ final Pref<Boolean> mConsoleOutput = new Pref<Boolean>(
|
/* package */ final Pref<Boolean> mConsoleOutput = new Pref<Boolean>(
|
||||||
"geckoview.console.enabled", false);
|
"geckoview.console.enabled", false);
|
||||||
/* package */ final Pref<Integer> mAutoplayDefault = new Pref<Integer>(
|
|
||||||
"media.autoplay.default", AUTOPLAY_DEFAULT_BLOCKED);
|
|
||||||
/* package */ final Pref<Integer> mFontSizeFactor = new Pref<>(
|
/* package */ final Pref<Integer> mFontSizeFactor = new Pref<>(
|
||||||
"font.size.systemFontScale", 100);
|
"font.size.systemFontScale", 100);
|
||||||
/* package */ final Pref<Integer> mFontInflationMinTwips = new Pref<>(
|
/* package */ final Pref<Integer> mFontInflationMinTwips = new Pref<>(
|
||||||
@ -836,41 +823,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings {
|
|||||||
return GeckoFontScaleListener.getInstance().getEnabled();
|
return GeckoFontScaleListener.getInstance().getEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sync values with dom/media/nsIAutoplay.idl.
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
|
||||||
@IntDef({ AUTOPLAY_DEFAULT_ALLOWED, AUTOPLAY_DEFAULT_BLOCKED })
|
|
||||||
/* package */ @interface AutoplayDefault {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Autoplay video is allowed.
|
|
||||||
*/
|
|
||||||
public static final int AUTOPLAY_DEFAULT_ALLOWED = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Autoplay video is blocked.
|
|
||||||
*/
|
|
||||||
public static final int AUTOPLAY_DEFAULT_BLOCKED = 1;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets video autoplay mode.
|
|
||||||
* May be either {@link GeckoRuntimeSettings#AUTOPLAY_DEFAULT_ALLOWED} or {@link GeckoRuntimeSettings#AUTOPLAY_DEFAULT_BLOCKED}
|
|
||||||
* @param autoplay Allows or blocks video autoplay.
|
|
||||||
* @return This GeckoRuntimeSettings instance.
|
|
||||||
*/
|
|
||||||
public @NonNull GeckoRuntimeSettings setAutoplayDefault(final @AutoplayDefault int autoplay) {
|
|
||||||
mAutoplayDefault.commit(autoplay);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the current video autoplay mode.
|
|
||||||
* @return The current video autoplay mode. Will be either {@link GeckoRuntimeSettings#AUTOPLAY_DEFAULT_ALLOWED}
|
|
||||||
* or {@link GeckoRuntimeSettings#AUTOPLAY_DEFAULT_BLOCKED}
|
|
||||||
*/
|
|
||||||
public @AutoplayDefault int getAutoplayDefault() {
|
|
||||||
return mAutoplayDefault.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final int FONT_INFLATION_BASE_VALUE = 120;
|
private static final int FONT_INFLATION_BASE_VALUE = 120;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -23,9 +23,15 @@ exclude: true
|
|||||||
- Added [`DebuggerDelegate#onExtensionListUpdated`][75.2] to notify that a temporary
|
- Added [`DebuggerDelegate#onExtensionListUpdated`][75.2] to notify that a temporary
|
||||||
extension has been installed by the debugger.
|
extension has been installed by the debugger.
|
||||||
([bug 1614295]({{bugzilla}}1614295))
|
([bug 1614295]({{bugzilla}}1614295))
|
||||||
|
- ⚠️ Removed [`GeckoRuntimeSettings.setAutoplayDefault`][75.3], use
|
||||||
|
[`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_AUDIBLE`][73.12] and
|
||||||
|
[`GeckoSession.PermissionDelegate#PERMISSION_AUTOPLAY_INAUDIBLE`][73.13] to
|
||||||
|
control autoplay.
|
||||||
|
([bug 1614894]({{bugzilla}}1614894))
|
||||||
|
|
||||||
[75.1]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#useMultiprocess-boolean-
|
[75.1]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#useMultiprocess-boolean-
|
||||||
[75.2]: {{javadoc_uri}}/WebExtensionController.DebuggerDelegate.html#onExtensionListUpdated--
|
[75.2]: {{javadoc_uri}}/WebExtensionController.DebuggerDelegate.html#onExtensionListUpdated--
|
||||||
|
[75.3]: {{javadoc_uri}}/GeckoRuntimeSettings.Builder.html#autoplayDefault-boolean-
|
||||||
|
|
||||||
## v74
|
## v74
|
||||||
- Added [`WebExtensionController.enable`][74.1] and [`disable`][74.2] to
|
- Added [`WebExtensionController.enable`][74.1] and [`disable`][74.2] to
|
||||||
@ -589,4 +595,4 @@ exclude: true
|
|||||||
[65.24]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-android.os.Bundle-java.lang.String-
|
[65.24]: {{javadoc_uri}}/CrashReporter.html#sendCrashReport-android.content.Context-android.os.Bundle-java.lang.String-
|
||||||
[65.25]: {{javadoc_uri}}/GeckoResult.html
|
[65.25]: {{javadoc_uri}}/GeckoResult.html
|
||||||
|
|
||||||
[api-version]: e79b2ea5f93700f9e920b962286ec7b203c493b9
|
[api-version]: 898e8783e858824b7af7e4e9763bf5aaa54c0b0c
|
||||||
|
@ -308,6 +308,7 @@ public class GeckoViewActivity
|
|||||||
private GeckoView mGeckoView;
|
private GeckoView mGeckoView;
|
||||||
private boolean mFullAccessibilityTree;
|
private boolean mFullAccessibilityTree;
|
||||||
private boolean mUseTrackingProtection;
|
private boolean mUseTrackingProtection;
|
||||||
|
private boolean mAllowAutoplay;
|
||||||
private boolean mUsePrivateBrowsing;
|
private boolean mUsePrivateBrowsing;
|
||||||
private boolean mEnableRemoteDebugging;
|
private boolean mEnableRemoteDebugging;
|
||||||
private boolean mKillProcessOnDestroy;
|
private boolean mKillProcessOnDestroy;
|
||||||
@ -317,7 +318,6 @@ public class GeckoViewActivity
|
|||||||
|
|
||||||
private boolean mShowNotificationsRejected;
|
private boolean mShowNotificationsRejected;
|
||||||
private ArrayList<String> mAcceptedPersistentStorage = new ArrayList<String>();
|
private ArrayList<String> mAcceptedPersistentStorage = new ArrayList<String>();
|
||||||
private ArrayList<String> mAcceptedAutoplay = new ArrayList<>();
|
|
||||||
|
|
||||||
private ToolbarLayout mToolbarView;
|
private ToolbarLayout mToolbarView;
|
||||||
private String mCurrentUri;
|
private String mCurrentUri;
|
||||||
@ -734,6 +734,7 @@ public class GeckoViewActivity
|
|||||||
menu.findItem(R.id.desktop_mode).setChecked(mDesktopMode);
|
menu.findItem(R.id.desktop_mode).setChecked(mDesktopMode);
|
||||||
menu.findItem(R.id.action_remote_debugging).setChecked(mEnableRemoteDebugging);
|
menu.findItem(R.id.action_remote_debugging).setChecked(mEnableRemoteDebugging);
|
||||||
menu.findItem(R.id.action_forward).setEnabled(mCanGoForward);
|
menu.findItem(R.id.action_forward).setEnabled(mCanGoForward);
|
||||||
|
menu.findItem(R.id.allow_autoplay).setChecked(mAllowAutoplay);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -752,6 +753,10 @@ public class GeckoViewActivity
|
|||||||
updateTrackingProtection(session);
|
updateTrackingProtection(session);
|
||||||
session.reload();
|
session.reload();
|
||||||
break;
|
break;
|
||||||
|
case R.id.allow_autoplay:
|
||||||
|
mAllowAutoplay = !mAllowAutoplay;
|
||||||
|
session.reload();
|
||||||
|
break;
|
||||||
case R.id.action_tpe:
|
case R.id.action_tpe:
|
||||||
sGeckoRuntime.getContentBlockingController().checkException(session).accept(value -> {
|
sGeckoRuntime.getContentBlockingController().checkException(session).accept(value -> {
|
||||||
if (value.booleanValue()) {
|
if (value.booleanValue()) {
|
||||||
@ -1314,8 +1319,13 @@ public class GeckoViewActivity
|
|||||||
} else if (PERMISSION_XR == type) {
|
} else if (PERMISSION_XR == type) {
|
||||||
resId = R.string.request_xr;
|
resId = R.string.request_xr;
|
||||||
} else if (PERMISSION_AUTOPLAY_AUDIBLE == type || PERMISSION_AUTOPLAY_INAUDIBLE == type) {
|
} else if (PERMISSION_AUTOPLAY_AUDIBLE == type || PERMISSION_AUTOPLAY_INAUDIBLE == type) {
|
||||||
|
if (!mAllowAutoplay) {
|
||||||
Log.d(LOGTAG, "Rejecting autoplay request");
|
Log.d(LOGTAG, "Rejecting autoplay request");
|
||||||
callback.reject();
|
callback.reject();
|
||||||
|
} else {
|
||||||
|
Log.d(LOGTAG, "Granting autoplay request");
|
||||||
|
callback.grant();
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
Log.w(LOGTAG, "Unknown permission: " + type);
|
Log.w(LOGTAG, "Unknown permission: " + type);
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item android:title="@string/tracking_protection" android:id="@+id/action_tp" app:showAsAction="never"
|
<item android:title="@string/tracking_protection" android:id="@+id/action_tp" app:showAsAction="never"
|
||||||
android:checkable="true"/>
|
android:checkable="true"/>
|
||||||
|
<item android:title="Allow Autoplay" android:id="@+id/allow_autoplay" app:showAsAction="never"
|
||||||
|
android:checkable="true" />
|
||||||
<item android:title="@string/tracking_protection_ex" android:id="@+id/action_tpe" app:showAsAction="never" />
|
<item android:title="@string/tracking_protection_ex" android:id="@+id/action_tpe" app:showAsAction="never" />
|
||||||
<item android:title="@string/desktop_mode" android:id="@+id/desktop_mode" android:checkable="true"
|
<item android:title="@string/desktop_mode" android:id="@+id/desktop_mode" android:checkable="true"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
Loading…
Reference in New Issue
Block a user