This is an automated email from the ASF dual-hosted git repository.
erisu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-ios.git
The following commit(s) were added to refs/heads/master by this push:
new cfc8177 chore: deprecate mediaPlaybackRequiresUserAction (#784)
cfc8177 is described below
commit cfc817776366f05d825f56149fbdf1497d6ad976
Author: エリス <[email protected]>
AuthorDate: Mon Feb 17 13:56:16 2020 +0900
chore: deprecate mediaPlaybackRequiresUserAction (#784)
Apple has deprecated "mediaPlaybackRequiresUserAction" in iOS 8.0–9.0.
This flag should be replaced with
"mediaTypesRequiringUserActionForPlayback".
Preference name has also been changed to
"MediaTypesRequiringUserActionForPlayback"
---
.../Plugins/CDVWebViewEngine/CDVWebViewEngine.m | 10 ++++++++-
bin/templates/project/__PROJECT_NAME__/config.xml | 2 +-
bin/templates/scripts/cordova/defaults.xml | 2 +-
bin/templates/scripts/cordova/lib/prepare.js | 25 ++++++++++++++++++++++
tests/CordovaLibTests/CDVWebViewEngineTest.m | 22 ++++---------------
tests/CordovaLibTests/CordovaLibApp/config.xml | 2 +-
.../fixtures/ios-config-xml/SampleApp/config.xml | 2 +-
7 files changed, 42 insertions(+), 23 deletions(-)
diff --git
a/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m
b/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m
index 2721504..f99d70f 100644
--- a/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m
+++ b/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m
@@ -74,7 +74,15 @@
}
configuration.allowsInlineMediaPlayback = [settings
cordovaBoolSettingForKey:@"AllowInlineMediaPlayback" defaultValue:NO];
- configuration.mediaPlaybackRequiresUserAction = [settings
cordovaBoolSettingForKey:@"MediaPlaybackRequiresUserAction" defaultValue:YES];
+
+ // Check for usage of the older preference key, alert, and use.
+ BOOL mediaTypesRequiringUserActionForPlayback = [settings
cordovaBoolSettingForKey:@"MediaTypesRequiringUserActionForPlayback"
defaultValue:YES];
+ NSString *mediaPlaybackRequiresUserActionKey = [settings
cordovaSettingForKey:@"MediaPlaybackRequiresUserAction"];
+ if(mediaPlaybackRequiresUserActionKey != nil) {
+ mediaTypesRequiringUserActionForPlayback = [settings
cordovaBoolSettingForKey:@"MediaPlaybackRequiresUserAction" defaultValue:YES];
+ }
+ configuration.mediaTypesRequiringUserActionForPlayback =
mediaTypesRequiringUserActionForPlayback;
+
configuration.suppressesIncrementalRendering = [settings
cordovaBoolSettingForKey:@"SuppressesIncrementalRendering" defaultValue:NO];
configuration.mediaPlaybackAllowsAirPlay = [settings
cordovaBoolSettingForKey:@"MediaPlaybackAllowsAirPlay" defaultValue:YES];
return configuration;
diff --git a/bin/templates/project/__PROJECT_NAME__/config.xml
b/bin/templates/project/__PROJECT_NAME__/config.xml
index 7471bb0..d41fd6d 100644
--- a/bin/templates/project/__PROJECT_NAME__/config.xml
+++ b/bin/templates/project/__PROJECT_NAME__/config.xml
@@ -53,7 +53,7 @@
<preference name="DisallowOverscroll" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
- <preference name="MediaPlaybackRequiresUserAction" value="false" />
+ <preference name="MediaTypesRequiringUserActionForPlayback" value="false"
/>
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="SuppressesLongPressGesture" value="false" />
<preference name="Suppresses3DTouchGesture" value="false" />
diff --git a/bin/templates/scripts/cordova/defaults.xml
b/bin/templates/scripts/cordova/defaults.xml
index a918266..b7edc26 100644
--- a/bin/templates/scripts/cordova/defaults.xml
+++ b/bin/templates/scripts/cordova/defaults.xml
@@ -27,7 +27,7 @@
<preference name="DisallowOverscroll" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
- <preference name="MediaPlaybackRequiresUserAction" value="false" />
+ <preference name="MediaTypesRequiringUserActionForPlayback" value="false"
/>
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="SuppressesLongPressGesture" value="false" />
<preference name="Suppresses3DTouchGesture" value="false" />
diff --git a/bin/templates/scripts/cordova/lib/prepare.js
b/bin/templates/scripts/cordova/lib/prepare.js
index 0ae4197..64bb691 100644
--- a/bin/templates/scripts/cordova/lib/prepare.js
+++ b/bin/templates/scripts/cordova/lib/prepare.js
@@ -60,6 +60,9 @@ module.exports.prepare = function (cordovaProject, options) {
updateFileResources(cordovaProject, this.locations);
})
.then(() => {
+ alertDeprecatedPreference(this._config);
+ })
+ .then(() => {
events.emit('verbose', 'Prepared iOS project successfully');
});
};
@@ -517,6 +520,28 @@ function updateFileResources (cordovaProject, locations) {
project.write();
}
+function alertDeprecatedPreference (configParser) {
+ const deprecatedToNewPreferences = {
+ MediaPlaybackRequiresUserAction:
'MediaTypesRequiringUserActionForPlayback'
+ };
+
+ Object.keys(deprecatedToNewPreferences).forEach(oldKey => {
+ if (configParser.getPreference(oldKey)) {
+ const log = [`The preference name "${oldKey}" is being
deprecated.`];
+
+ if (deprecatedToNewPreferences[oldKey]) {
+ log.push(`It is recommended to update this preference with
"${deprecatedToNewPreferences[oldKey]}."`);
+ } else {
+ log.push(`There is no replacement for this preference.`);
+ }
+
+ log.push(`Please note that this preference will be removed in the
near future.`);
+
+ events.emit('warn', log.join(' '));
+ }
+ });
+}
+
function cleanFileResources (projectRoot, projectConfig, locations) {
const platformDir = path.relative(projectRoot, locations.root);
const files = projectConfig.getFileResources('ios', true);
diff --git a/tests/CordovaLibTests/CDVWebViewEngineTest.m
b/tests/CordovaLibTests/CDVWebViewEngineTest.m
index a251b59..e21efc4 100644
--- a/tests/CordovaLibTests/CDVWebViewEngineTest.m
+++ b/tests/CordovaLibTests/CDVWebViewEngineTest.m
@@ -87,13 +87,10 @@
id<CDVWebViewEngineProtocol> webViewEngineProtocol = self.plugin;
WKWebView* wkWebView = (WKWebView*)self.plugin.engineWebView;
- // iOS >=10 defaults to NO, < 10 defaults to YES.
- BOOL mediaPlaybackRequiresUserActionDefault =
IsAtLeastiOSVersion(@"10.0")? NO : YES;
-
NSDictionary* preferences = @{
[@"MinimumFontSize" lowercaseString] : @1.1, //
default is 0.0
[@"AllowInlineMediaPlayback" lowercaseString] :
@YES, // default is NO
- [@"MediaPlaybackRequiresUserAction"
lowercaseString] : @(!mediaPlaybackRequiresUserActionDefault), // default is NO
on iOS >= 10, YES for < 10
+ [@"MediaTypesRequiringUserActionForPlayback"
lowercaseString] : @YES, // default is NO
[@"SuppressesIncrementalRendering"
lowercaseString] : @YES, // default is NO
[@"MediaPlaybackAllowsAirPlay" lowercaseString]
: @NO, // default is YES
[@"DisallowOverscroll" lowercaseString] : @YES,
// so bounces is to be NO. defaults to NO
@@ -108,11 +105,7 @@
XCTAssertEqualWithAccuracy(wkWebView.configuration.preferences.minimumFontSize,
1.1, 0.0001);
// the WKWebViewConfiguration properties, we **cannot** change outside of
initialization
- if (IsAtLeastiOSVersion(@"10.0")) {
-
XCTAssertFalse(wkWebView.configuration.mediaPlaybackRequiresUserAction);
- } else {
- XCTAssertTrue(wkWebView.configuration.mediaPlaybackRequiresUserAction);
- }
+
XCTAssertTrue(wkWebView.configuration.mediaTypesRequiringUserActionForPlayback);
XCTAssertFalse(wkWebView.configuration.allowsInlineMediaPlayback);
XCTAssertFalse(wkWebView.configuration.suppressesIncrementalRendering);
XCTAssertTrue(wkWebView.configuration.mediaPlaybackAllowsAirPlay);
@@ -137,13 +130,10 @@
self.viewController = [[CDVViewController alloc] init];
// generate the app settings
- // iOS >=10 defaults to NO, < 10 defaults to YES.
- BOOL mediaPlaybackRequiresUserActionDefault =
IsAtLeastiOSVersion(@"10.0")? NO : YES;
-
NSDictionary* settings = @{
[@"MinimumFontSize" lowercaseString] : @1.1,
// default is 0.0
[@"AllowInlineMediaPlayback"
lowercaseString] : @YES, // default is NO
- [@"MediaPlaybackRequiresUserAction"
lowercaseString] : @(!mediaPlaybackRequiresUserActionDefault), // default is NO
on iOS >= 10, YES for < 10
+ [@"MediaTypesRequiringUserActionForPlayback"
lowercaseString] : @YES, // default is NO
[@"SuppressesIncrementalRendering"
lowercaseString] : @YES, // default is NO
[@"MediaPlaybackAllowsAirPlay"
lowercaseString] : @NO, // default is YES
[@"DisallowOverscroll" lowercaseString] :
@YES, // so bounces is to be NO. defaults to NO
@@ -163,11 +153,7 @@
XCTAssertEqualWithAccuracy(wkWebView.configuration.preferences.minimumFontSize,
1.1, 0.0001);
// the WKWebViewConfiguration properties, we **cannot** change outside of
initialization
- if (IsAtLeastiOSVersion(@"10.0")) {
- XCTAssertTrue(wkWebView.configuration.mediaPlaybackRequiresUserAction);
- } else {
-
XCTAssertFalse(wkWebView.configuration.mediaPlaybackRequiresUserAction);
- }
+
XCTAssertTrue(wkWebView.configuration.mediaTypesRequiringUserActionForPlayback);
XCTAssertTrue(wkWebView.configuration.allowsInlineMediaPlayback);
XCTAssertTrue(wkWebView.configuration.suppressesIncrementalRendering);
// The test case below is in a separate test
"testConfigurationWithMediaPlaybackAllowsAirPlay" (Apple bug)
diff --git a/tests/CordovaLibTests/CordovaLibApp/config.xml
b/tests/CordovaLibTests/CordovaLibApp/config.xml
index 5b930fc..94b62c6 100644
--- a/tests/CordovaLibTests/CordovaLibApp/config.xml
+++ b/tests/CordovaLibTests/CordovaLibApp/config.xml
@@ -41,7 +41,7 @@
<preference name="DisallowOverscroll" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
- <preference name="MediaPlaybackRequiresUserAction" value="false" />
+ <preference name="MediaTypesRequiringUserActionForPlayback" value="false"
/>
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="SuppressesLongPressGesture" value="true" />
<preference name="Suppresses3DTouchGesture" value="false" />
diff --git a/tests/spec/unit/fixtures/ios-config-xml/SampleApp/config.xml
b/tests/spec/unit/fixtures/ios-config-xml/SampleApp/config.xml
index b235271..512f7fe 100755
--- a/tests/spec/unit/fixtures/ios-config-xml/SampleApp/config.xml
+++ b/tests/spec/unit/fixtures/ios-config-xml/SampleApp/config.xml
@@ -37,7 +37,7 @@
<preference name="DisallowOverscroll" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
- <preference name="MediaPlaybackRequiresUserAction" value="false" />
+ <preference name="MediaTypesRequiringUserActionForPlayback" value="false"
/>
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="SuppressesLongPressGesture" value="false" />
<preference name="Suppresses3DTouchGesture" value="false" />
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]