Source/WebCore:
authorwilander@apple.com <wilander@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Jun 2016 16:35:17 +0000 (16:35 +0000)
committerwilander@apple.com <wilander@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Jun 2016 16:35:17 +0000 (16:35 +0000)
Enable window.open() for existing versions of Secret Society
https://bugs.webkit.org/show_bug.cgi?id=159049
<rdar://problem/26528349>

Reviewed by Andy Estes.

The Secret Society Hidden Mystery app has a broken version check treating iOS 10
as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
handler. We should allow the existing versions of the app to do this to not break
them.

No new tests. Tested manually in the app.

* page/DOMWindow.cpp:
(WebCore::DOMWindow::allowPopUp):
    Now checks with Settings whether it should allow a popup even though it is
    not processing a user gesture.
* page/Settings.in:
    Added setting allowWindowOpenWithoutUserGesture.
* platform/RuntimeApplicationChecks.h:
* platform/RuntimeApplicationChecks.mm:
(WebCore::IOSApplication::isTheSecretSocietyHiddenMystery):
    Added.

Source/WebKit/mac:
Enable window.open() for existing versions of Secret Society app
https://bugs.webkit.org/show_bug.cgi?id=159049
<rdar://problem/26528349>

Reviewed by Andy Estes.

The Secret Society Hidden Mystery app has a broken version check treating iOS 10
as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
handler. We should allow the existing versions of the app to do this to not break
them.

* WebView/WebView.mm:
(shouldAllowWindowOpenWithoutUserGesture):
    Added.
(shouldConvertInvalidURLsToBlank):
    Changed hex number to constant DYLD_IOS_VERSION_10_0.

Source/WTF:
Enable window.open() for existing versions of Secret Society
https://bugs.webkit.org/show_bug.cgi?id=159049
<rdar://problem/26528349>

Reviewed by Andy Estes.

The Secret Society Hidden Mystery app has a broken version check treating iOS 10
as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
handler. We should allow the existing versions of the app to do this to not break
them.

* wtf/spi/darwin/dyldSPI.h:
    Added DYLD_IOS_VERSION_10_0.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202380 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/spi/darwin/dyldSPI.h
Source/WebCore/ChangeLog
Source/WebCore/page/DOMWindow.cpp
Source/WebCore/page/Settings.in
Source/WebCore/platform/RuntimeApplicationChecks.h
Source/WebCore/platform/RuntimeApplicationChecks.mm
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/WebView/WebView.mm

index 1e6ba97..e600491 100644 (file)
@@ -1,3 +1,19 @@
+2016-06-23  John Wilander  <wilander@apple.com>
+
+        Enable window.open() for existing versions of Secret Society
+        https://bugs.webkit.org/show_bug.cgi?id=159049
+        <rdar://problem/26528349>
+        
+        Reviewed by Andy Estes.
+
+        The Secret Society Hidden Mystery app has a broken version check treating iOS 10
+        as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
+        handler. We should allow the existing versions of the app to do this to not break
+        them.
+
+        * wtf/spi/darwin/dyldSPI.h:
+            Added DYLD_IOS_VERSION_10_0.
+
 2016-06-21  Said Abou-Hallawa  <sabouhallawa@apple,com>
 
         Add system tracing points for requestAnimationFrame() workflow
index b542b94..1216079 100644 (file)
@@ -37,6 +37,7 @@
 #define DYLD_IOS_VERSION_6_0 0x00060000
 #define DYLD_IOS_VERSION_7_0 0x00070000
 #define DYLD_IOS_VERSION_9_0 0x00090000
+#define DYLD_IOS_VERSION_10_0 0x000A0000
 
 #endif
 
index 61c38c9..8fe45e4 100644 (file)
@@ -1,3 +1,29 @@
+2016-06-23  John Wilander  <wilander@apple.com>
+
+        Enable window.open() for existing versions of Secret Society
+        https://bugs.webkit.org/show_bug.cgi?id=159049
+        <rdar://problem/26528349>
+
+        Reviewed by Andy Estes.
+
+        The Secret Society Hidden Mystery app has a broken version check treating iOS 10
+        as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
+        handler. We should allow the existing versions of the app to do this to not break
+        them.
+
+        No new tests. Tested manually in the app.
+
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::allowPopUp):
+            Now checks with Settings whether it should allow a popup even though it is
+            not processing a user gesture.
+        * page/Settings.in:
+            Added setting allowWindowOpenWithoutUserGesture.
+        * platform/RuntimeApplicationChecks.h:
+        * platform/RuntimeApplicationChecks.mm:
+        (WebCore::IOSApplication::isTheSecretSocietyHiddenMystery):
+            Added.
+
 2016-06-23  Chris Dumez  <cdumez@apple.com>
 
         Only call sqlite3_initialize() when a SQLite database is actually being opened
index ea9ad42..f1ae742 100644 (file)
@@ -358,11 +358,13 @@ FloatRect DOMWindow::adjustWindowRect(Page* page, const FloatRect& pendingChange
 bool DOMWindow::allowPopUp(Frame* firstFrame)
 {
     ASSERT(firstFrame);
+    
+    auto& settings = firstFrame->settings();
 
-    if (ScriptController::processingUserGesture())
+    if (ScriptController::processingUserGesture() || settings.allowWindowOpenWithoutUserGesture())
         return true;
 
-    return firstFrame->settings().javaScriptCanOpenWindowsAutomatically();
+    return settings.javaScriptCanOpenWindowsAutomatically();
 }
 
 bool DOMWindow::allowPopUp()
index 126aaa2..98dcf86 100644 (file)
@@ -264,6 +264,8 @@ systemLayoutDirection type=TextDirection, initial=LTR
 
 allowContentSecurityPolicySourceStarToMatchAnyProtocol initial=false
 
+allowWindowOpenWithoutUserGesture initial=false
+
 selectionPaintingWithoutSelectionGapsEnabled initial=false
 
 shouldConvertInvalidURLsToBlank initial=true
index fb45c58..479ebea 100644 (file)
@@ -75,6 +75,7 @@ bool isIBooks();
 WEBCORE_EXPORT bool isEcobee();
 WEBCORE_EXPORT bool isQuora();
 WEBCORE_EXPORT bool isXtraMath();
+WEBCORE_EXPORT bool isTheSecretSocietyHiddenMystery();
 
 } // IOSApplication
 
index 12e9f23..e61c62e 100644 (file)
@@ -253,6 +253,12 @@ bool IOSApplication::isXtraMath()
     return isXtraMath;
 }
 
+bool IOSApplication::isTheSecretSocietyHiddenMystery()
+{
+    static bool isTheSecretSocietyHiddenMystery = applicationBundleIsEqualTo("com.g5e.secretsociety");
+    return isTheSecretSocietyHiddenMystery;
+}
+    
 #endif
 
 } // namespace WebCore
index a2040b9..42f5710 100644 (file)
@@ -1,3 +1,22 @@
+2016-06-23  John Wilander  <wilander@apple.com>
+
+        Enable window.open() for existing versions of Secret Society app
+        https://bugs.webkit.org/show_bug.cgi?id=159049
+        <rdar://problem/26528349>
+
+        Reviewed by Andy Estes.
+
+        The Secret Society Hidden Mystery app has a broken version check treating iOS 10
+        as iOS 1 on iPads. Therefore it believes it can use window.open() in a tap
+        handler. We should allow the existing versions of the app to do this to not break
+        them.
+
+        * WebView/WebView.mm:
+        (shouldAllowWindowOpenWithoutUserGesture):
+            Added.
+        (shouldConvertInvalidURLsToBlank):
+            Changed hex number to constant DYLD_IOS_VERSION_10_0.
+
 2016-06-22  Anders Carlsson  <andersca@apple.com>
 
         Move the WebKitLegacy Apple Pay code to the open source repository
index 47bb47a..85f3845 100644 (file)
@@ -876,10 +876,20 @@ static bool shouldAllowContentSecurityPolicySourceStarToMatchAnyProtocol()
 #endif
 }
 
+static bool shouldAllowWindowOpenWithoutUserGesture()
+{
+#if PLATFORM(IOS)
+    static bool shouldAllowWindowOpenWithoutUserGesture = IOSApplication::isTheSecretSocietyHiddenMystery() && dyld_get_program_sdk_version() < DYLD_IOS_VERSION_10_0;
+    return shouldAllowWindowOpenWithoutUserGesture;
+#else
+    return false;
+#endif
+}
+
 static bool shouldConvertInvalidURLsToBlank()
 {
 #if PLATFORM(IOS)
-    static bool shouldConvertInvalidURLsToBlank = dyld_get_program_sdk_version() >= 0x000A0000;
+    static bool shouldConvertInvalidURLsToBlank = dyld_get_program_sdk_version() >= DYLD_IOS_VERSION_10_0;
 #elif PLATFORM(MAC)
     static bool shouldConvertInvalidURLsToBlank = dyld_get_program_sdk_version() >= 0x000A0C00;
 #else
@@ -2542,6 +2552,8 @@ static bool needsSelfRetainWhileLoadingQuirk()
 
     settings.setAllowContentSecurityPolicySourceStarToMatchAnyProtocol(shouldAllowContentSecurityPolicySourceStarToMatchAnyProtocol());
 
+    settings.setAllowWindowOpenWithoutUserGesture(shouldAllowWindowOpenWithoutUserGesture());
+
     settings.setShouldConvertInvalidURLsToBlank(shouldConvertInvalidURLsToBlank());
 }