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 d9a9d01  breaking: remove MediaPlaybackRequiresUserAction and update 
MediaTypesRequiringUserActionForPlayback to proper variable types (#797)
d9a9d01 is described below

commit d9a9d0104cb6c473a4aaa0662239c9700a03efcb
Author: エリス <[email protected]>
AuthorDate: Thu Feb 27 15:08:39 2020 +0900

    breaking: remove MediaPlaybackRequiresUserAction and update 
MediaTypesRequiringUserActionForPlayback to proper variable types (#797)
    
    * fix (MediaTypesRequiringUserActionForPlayback): pass valid media type
    * breaking (MediaPlaybackRequiresUserAction): delete
    * As the new preference key always exists in "defaults.xml", the old 
preference key would never be used.
    * Updated deprecation warning logic to include "has been" deprecated since 
it was completely removed. Most cases the warning would be removed as well but 
the previous releases never properly warn the user. Warning will remain for 
next major only as a migration step for users.
---
 .../Plugins/CDVWebViewEngine/CDVWebViewEngine.m    | 22 +++++++++++----
 bin/templates/scripts/cordova/defaults.xml         |  2 +-
 bin/templates/scripts/cordova/lib/prepare.js       | 33 +++++++++++++++++-----
 tests/CordovaLibTests/CDVWebViewEngineTest.m       |  4 +--
 4 files changed, 45 insertions(+), 16 deletions(-)

diff --git 
a/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m 
b/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m
index 3a9ff06..4b0543f 100644
--- a/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m
+++ b/CordovaLib/Classes/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.m
@@ -75,13 +75,23 @@
 
     configuration.allowsInlineMediaPlayback = [settings 
cordovaBoolSettingForKey:@"AllowInlineMediaPlayback" defaultValue:NO];
 
-    // 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];
+    // Set the media types that are required for user action for playback
+    WKAudiovisualMediaTypes mediaType = WKAudiovisualMediaTypeAll; // default
+
+    // targetMediaType will always exist, either from user's "config.xml" or 
default ("defaults.xml").
+    id targetMediaType = [settings 
cordovaSettingForKey:@"MediaTypesRequiringUserActionForPlayback"];
+    if ([targetMediaType isEqualToString:@"none"]) {
+        mediaType = WKAudiovisualMediaTypeNone;
+    } else if ([targetMediaType isEqualToString:@"audio"]) {
+        mediaType = WKAudiovisualMediaTypeAudio;
+    } else if ([targetMediaType isEqualToString:@"video"]) {
+        mediaType = WKAudiovisualMediaTypeVideo;
+    } else if ([targetMediaType isEqualToString:@"all"]) {
+        mediaType = WKAudiovisualMediaTypeAll;
+    } else {
+        NSLog(@"Invalid \"MediaTypesRequiringUserActionForPlayback\" was 
detected. Fallback to default value of \"all\" types.");
     }
-    configuration.mediaTypesRequiringUserActionForPlayback = 
mediaTypesRequiringUserActionForPlayback;
+    configuration.mediaTypesRequiringUserActionForPlayback = mediaType;
 
     configuration.suppressesIncrementalRendering = [settings 
cordovaBoolSettingForKey:@"SuppressesIncrementalRendering" defaultValue:NO];
 
diff --git a/bin/templates/scripts/cordova/defaults.xml 
b/bin/templates/scripts/cordova/defaults.xml
index b7edc26..f6eac29 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="MediaTypesRequiringUserActionForPlayback" value="false" 
/>
+    <preference name="MediaTypesRequiringUserActionForPlayback" value="none" />
     <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 333726f..9d6bf59 100644
--- a/bin/templates/scripts/cordova/lib/prepare.js
+++ b/bin/templates/scripts/cordova/lib/prepare.js
@@ -522,21 +522,40 @@ function updateFileResources (cordovaProject, locations) {
 
 function alertDeprecatedPreference (configParser) {
     const deprecatedToNewPreferences = {
-        MediaPlaybackRequiresUserAction: 
'MediaTypesRequiringUserActionForPlayback',
-        MediaPlaybackAllowsAirPlay: 'AllowsAirPlayForMediaPlayback'
+        MediaPlaybackRequiresUserAction: {
+            newPreference: 'MediaTypesRequiringUserActionForPlayback',
+            isDeprecated: true
+        },
+        MediaPlaybackAllowsAirPlay: {
+            newPreference: 'AllowsAirPlayForMediaPlayback',
+            isDeprecated: false
+        }
     };
 
     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]}."`);
+            const isDeprecated = 
deprecatedToNewPreferences[oldKey].isDeprecated;
+            const verb = isDeprecated ? 'has been' : 'is being';
+            const newPreferenceKey = 
deprecatedToNewPreferences[oldKey].newPreference;
+
+            // Create the Log Message
+            const log = [`The preference name "${oldKey}" ${verb} 
deprecated.`];
+            if (newPreferenceKey) {
+                log.push(`It is recommended to replace this preference with 
"${newPreferenceKey}."`);
             } else {
                 log.push(`There is no replacement for this preference.`);
             }
 
-            log.push(`Please note that this preference will be removed in the 
near future.`);
+            /**
+             * If the preference has been deprecated, the usage of the old 
preference is no longer used.
+             * Therefore, the following line is not appended. It is added only 
if the old preference is still used.
+             * We are only keeping the top lines for deprecated items only for 
an additional major release when
+             * the pre-warning was not provided in a past major release due to 
a necessary quick deprecation.
+             * Typically caused by implementation nature or third-party 
requirement changes.
+             */
+            if (!isDeprecated) {
+                log.push(`Please note that this preference will be removed in 
the near future.`);
+            }
 
             events.emit('warn', log.join(' '));
         }
diff --git a/tests/CordovaLibTests/CDVWebViewEngineTest.m 
b/tests/CordovaLibTests/CDVWebViewEngineTest.m
index ebe6435..7c9eb82 100644
--- a/tests/CordovaLibTests/CDVWebViewEngineTest.m
+++ b/tests/CordovaLibTests/CDVWebViewEngineTest.m
@@ -90,7 +90,7 @@
     NSDictionary* preferences = @{
                                [@"MinimumFontSize" lowercaseString] : @1.1, // 
default is 0.0
                                [@"AllowInlineMediaPlayback" lowercaseString] : 
@YES, // default is NO
-                               [@"MediaTypesRequiringUserActionForPlayback" 
lowercaseString] : @YES, // default is NO
+                               [@"MediaTypesRequiringUserActionForPlayback" 
lowercaseString] : @"all", // default is NO
                                [@"SuppressesIncrementalRendering" 
lowercaseString] : @YES, // default is NO
                                [@"AllowsAirPlayForMediaPlayback" 
lowercaseString] : @NO, // default is YES
                                [@"DisallowOverscroll" lowercaseString] : @YES, 
// so bounces is to be NO. defaults to NO
@@ -133,7 +133,7 @@
     NSDictionary* settings = @{
                                   [@"MinimumFontSize" lowercaseString] : @1.1, 
// default is 0.0
                                   [@"AllowInlineMediaPlayback" 
lowercaseString] : @YES, // default is NO
-                                  [@"MediaTypesRequiringUserActionForPlayback" 
lowercaseString] : @YES, // default is NO
+                                  [@"MediaTypesRequiringUserActionForPlayback" 
lowercaseString] : @"all", // default is NO
                                   [@"SuppressesIncrementalRendering" 
lowercaseString] : @YES, // default is NO
                                   [@"AllowsAirPlayForMediaPlayback" 
lowercaseString] : @NO, // default is YES
                                   [@"DisallowOverscroll" lowercaseString] : 
@YES, // so bounces is to be NO. defaults to NO


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to