Title: [184253] branches/safari-601.1.32-branch/Source/WebKit2
Revision
184253
Author
[email protected]
Date
2015-05-12 21:17:20 -0700 (Tue, 12 May 2015)

Log Message

Merge r184026. rdar://problem/20757196

Modified Paths

Diff

Modified: branches/safari-601.1.32-branch/Source/WebKit2/ChangeLog (184252 => 184253)


--- branches/safari-601.1.32-branch/Source/WebKit2/ChangeLog	2015-05-13 04:17:17 UTC (rev 184252)
+++ branches/safari-601.1.32-branch/Source/WebKit2/ChangeLog	2015-05-13 04:17:20 UTC (rev 184253)
@@ -2,113 +2,117 @@
 Dana Burkart  <[email protected]
 [email protected]>
 
-        Merge r183937. rdar://problem/20458697
+        Merge r184026. rdar://problem/20757196
 
-    2015-05-07  Jer Noble  <[email protected]>
+    2015-05-08  Dan Bernstein  <[email protected]>
 
-            [WK2][Fullscreen] Fullscreen video does not enter low-power mode.
-            https://bugs.webkit.org/show_bug.cgi?id=144744
+            <rdar://problem/20757196> NSInternalInconsistencyException raised in -[NSString encodeWithCoder:] beneath createEncodedObject when using WKRemoteObjectEncoder for Safari AutoFill
+            https://bugs.webkit.org/show_bug.cgi?id=144818
 
-            Reviewed by Darin Adler.
+            Reviewed by Anders Carlsson.
 
-            One of the requirements of entering low-power compositing mode is that no masking layers
-            are present in any of the ancestors of the fullscreen video layer. So once our fullscreen
-            transition animation completes, remove the mask layer entirely from our clipping layer.
-            This means it needs to be re-created and added when entering fullscreen, rather than just
-            at initialization time.
+            Allow NSString instances that contain unpaired surrogates to be encoded by
+            WKRemoteObjectCoder by encoding them directly rather than using
+            -[NSString encodeWithCoder:].
 
-            * UIProcess/mac/WKFullScreenWindowController.mm:
-            (-[WKFullScreenWindowController initWithWindow:webView:]):
-            (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
-            (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
+            * Shared/API/Cocoa/WKRemoteObjectCoder.mm:
+            (encodeString): Added. Sets an API::String as the object to encode.
+            (encodeObject): Changed to use encodeString for NSString instances.
+            (decodeString): Added. Gets an API::String from the dictionary and returns it as an
+            NSString.
+            (decodeObject): Changed to use decodeString for NSString instances.
 
     2015-05-12  Dana Burkart
     Dana Burkart  <[email protected]
     [email protected]>
 
-            Merge r183911. rdar://problem/20702435
+            Merge r183937. rdar://problem/20458697
 
-        2015-05-06  Jer Noble  <[email protected]>
+        2015-05-07  Jer Noble  <[email protected]>
 
-                [WK2][Fullscreen] Elements whose children extend beyond their bounds are clipped in fullscreen mode.
-                https://bugs.webkit.org/show_bug.cgi?id=144716
+                [WK2][Fullscreen] Fullscreen video does not enter low-power mode.
+                https://bugs.webkit.org/show_bug.cgi?id=144744
 
                 Reviewed by Darin Adler.
 
-                We create a mask animation for the transition between windowed and fullscreen modes, on the
-                assumption that the element being taken into fullscreen mode does not have visible children
-                who extend beyond that elements bounds. This assumption breaks down in the case where div
-                with absolutely positioned children is taken fullscreen. While we can't necessarily make the
-                transition look correct in this case, we can remove the mask after the transition completes.
+                One of the requirements of entering low-power compositing mode is that no masking layers
+                are present in any of the ancestors of the fullscreen video layer. So once our fullscreen
+                transition animation completes, remove the mask layer entirely from our clipping layer.
+                This means it needs to be re-created and added when entering fullscreen, rather than just
+                at initialization time.
 
                 * UIProcess/mac/WKFullScreenWindowController.mm:
+                (-[WKFullScreenWindowController initWithWindow:webView:]):
                 (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
-                * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
-                (WebKit::removeAllMediaKeyStorageForOriginPath):
+                (-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
 
         2015-05-12  Dana Burkart
         Dana Burkart  <[email protected]
         [email protected]>
 
-                Merge r183909. rdar://problem/18894598
+                Merge r183911. rdar://problem/20702435
 
-            2015-05-06  Daniel Bates  <[email protected]>
+            2015-05-06  Jer Noble  <[email protected]>
 
-                    [iOS][WK2] Pause/resume database thread when UIProcess enters/leaves the background
-                    https://bugs.webkit.org/show_bug.cgi?id=144657
-                    <rdar://problem/18894598>
+                    [WK2][Fullscreen] Elements whose children extend beyond their bounds are clipped in fullscreen mode.
+                    https://bugs.webkit.org/show_bug.cgi?id=144716
 
-                    Reviewed by Andy Estes.
+                    Reviewed by Darin Adler.
 
-                    Pause and resume the database thread when the UIProcess enters and leaves the background,
-                    respectively, so that we avoid WebProcess termination due to holding a locked SQLite
-                    database file when the WebProcess is suspended. This behavior matches the analagous
-                    behavior in Legacy WebKit.
+                    We create a mask animation for the transition between windowed and fullscreen modes, on the
+                    assumption that the element being taken into fullscreen mode does not have visible children
+                    who extend beyond that elements bounds. This assumption breaks down in the case where div
+                    with absolutely positioned children is taken fullscreen. While we can't necessarily make the
+                    transition look correct in this case, we can remove the mask after the transition completes.
 
-                    * UIProcess/WebPageProxy.h:
-                    * UIProcess/ios/WKContentView.mm:
-                    (-[WKContentView _applicationDidEnterBackground:]): Call WebPageProxy::applicationDidEnterBackground()
-                    when the UIProcess enters the background.
-                    * UIProcess/ios/WebPageProxyIOS.mm:
-                    (WebKit::WebPageProxy::applicationDidEnterBackground): Added; notify the WebProcess to pause the database thread.
-                    We temporarily take out background assertion on the WebProcess before sending this notification to ensure that the
-                    WebProcess is running to receive it. We'll release this assertion when the WebProcess replies that it received the
-                    notification.
-                    * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
-                    (WebKit::WebDatabaseManager::setPauseAllDatabases): Added; turns around and calls DatabaseManager::setPauseAllDatabases().
-                    * WebProcess/WebCoreSupport/WebDatabaseManager.h:
-                    * WebProcess/WebPage/WebPage.h:
-                    * WebProcess/WebPage/WebPage.messages.in: Add message ApplicationDidEnterBackground(). Also,
-                    add empty lines to help demarcate this message and the other UIKit application lifecycle-related
-                    messages from the rest of the list of messages.
-                    * WebProcess/WebPage/ios/WebPageIOS.mm:
-                    (WebKit::WebPage::applicationWillEnterForeground): Resume the database thread.
-                    (WebKit::WebPage::applicationDidEnterBackground): Pause the database thread.
+                    * UIProcess/mac/WKFullScreenWindowController.mm:
+                    (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
+                    * WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:
+                    (WebKit::removeAllMediaKeyStorageForOriginPath):
 
             2015-05-12  Dana Burkart
-            Dana Burkart  <[email protected]>
+            Dana Burkart  <[email protected]
+            [email protected]>
 
-                    Merge r183942. rdar://problem/20049088
+                    Merge r183909. rdar://problem/18894598
 
-                2015-05-06  Dean Jackson  <[email protected]>
+                2015-05-06  Daniel Bates  <[email protected]>
 
-                        Handle backdrop views that have to tile
-                        https://bugs.webkit.org/show_bug.cgi?id=142317
-                        <rdar://problem/20049088>
+                        [iOS][WK2] Pause/resume database thread when UIProcess enters/leaves the background
+                        https://bugs.webkit.org/show_bug.cgi?id=144657
+                        <rdar://problem/18894598>
 
-                        Reviewed by Simon Fraser.
+                        Reviewed by Andy Estes.
 
-                        Take 2 - this was rolled out because Mavericks was crashing.
+                        Pause and resume the database thread when the UIProcess enters and leaves the background,
+                        respectively, so that we avoid WebProcess termination due to holding a locked SQLite
+                        database file when the WebProcess is suspended. This behavior matches the analagous
+                        behavior in Legacy WebKit.
 
-                        Add some better logging for custom appearance.
+                        * UIProcess/WebPageProxy.h:
+                        * UIProcess/ios/WKContentView.mm:
+                        (-[WKContentView _applicationDidEnterBackground:]): Call WebPageProxy::applicationDidEnterBackground()
+                        when the UIProcess enters the background.
+                        * UIProcess/ios/WebPageProxyIOS.mm:
+                        (WebKit::WebPageProxy::applicationDidEnterBackground): Added; notify the WebProcess to pause the database thread.
+                        We temporarily take out background assertion on the WebProcess before sending this notification to ensure that the
+                        WebProcess is running to receive it. We'll release this assertion when the WebProcess replies that it received the
+                        notification.
+                        * WebProcess/WebCoreSupport/WebDatabaseManager.cpp:
+                        (WebKit::WebDatabaseManager::setPauseAllDatabases): Added; turns around and calls DatabaseManager::setPauseAllDatabases().
+                        * WebProcess/WebCoreSupport/WebDatabaseManager.h:
+                        * WebProcess/WebPage/WebPage.h:
+                        * WebProcess/WebPage/WebPage.messages.in: Add message ApplicationDidEnterBackground(). Also,
+                        add empty lines to help demarcate this message and the other UIKit application lifecycle-related
+                        messages from the rest of the list of messages.
+                        * WebProcess/WebPage/ios/WebPageIOS.mm:
+                        (WebKit::WebPage::applicationWillEnterForeground): Resume the database thread.
+                        (WebKit::WebPage::applicationDidEnterBackground): Pause the database thread.
 
-                        * Shared/mac/RemoteLayerTreeTransaction.mm:
-                        (WebKit::RemoteLayerTreeTextStream::operator<<):
-
                 2015-05-12  Dana Burkart
                 Dana Burkart  <[email protected]>
 
-                        Merge r183894. rdar://problem/20049088
+                        Merge r183942. rdar://problem/20049088
 
                     2015-05-06  Dean Jackson  <[email protected]>
 
@@ -118,11 +122,31 @@
 
                             Reviewed by Simon Fraser.
 
+                            Take 2 - this was rolled out because Mavericks was crashing.
+
                             Add some better logging for custom appearance.
 
                             * Shared/mac/RemoteLayerTreeTransaction.mm:
                             (WebKit::RemoteLayerTreeTextStream::operator<<):
 
+                    2015-05-12  Dana Burkart
+                    Dana Burkart  <[email protected]>
+
+                            Merge r183894. rdar://problem/20049088
+
+                        2015-05-06  Dean Jackson  <[email protected]>
+
+                                Handle backdrop views that have to tile
+                                https://bugs.webkit.org/show_bug.cgi?id=142317
+                                <rdar://problem/20049088>
+
+                                Reviewed by Simon Fraser.
+
+                                Add some better logging for custom appearance.
+
+                                * Shared/mac/RemoteLayerTreeTransaction.mm:
+                                (WebKit::RemoteLayerTreeTextStream::operator<<):
+
 2015-05-11  Babak Shafiei  <[email protected]>
 
         Merge r184004.

Modified: branches/safari-601.1.32-branch/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm (184252 => 184253)


--- branches/safari-601.1.32-branch/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm	2015-05-13 04:17:17 UTC (rev 184252)
+++ branches/safari-601.1.32-branch/Source/WebKit2/Shared/API/Cocoa/WKRemoteObjectCoder.mm	2015-05-13 04:17:20 UTC (rev 184253)
@@ -41,6 +41,7 @@
 
 static const char* const classNameKey = "$class";
 static const char* const objectStreamKey = "$objectStream";
+static const char* const stringKey = "$string";
 
 static NSString * const selectorKey = @"selector";
 static NSString * const typeStringKey = @"typeString";
@@ -213,6 +214,11 @@
     }
 }
 
+static void encodeString(WKRemoteObjectEncoder *encoder, NSString *string)
+{
+    encoder->_currentDictionary->set(stringKey, API::String::create(string));
+}
+
 static void encodeObject(WKRemoteObjectEncoder *encoder, id object)
 {
     ASSERT(object);
@@ -235,6 +241,11 @@
         return;
     }
 
+    if ([object isKindOfClass:[NSString class]]) {
+        encodeString(encoder, object);
+        return;
+    }
+
     [object encodeWithCoder:encoder];
 }
 
@@ -546,6 +557,15 @@
     return invocation;
 }
 
+static NSString *decodeString(WKRemoteObjectDecoder *decoder)
+{
+    API::String* string = decoder->_currentDictionary->get<API::String>(stringKey);
+    if (!string)
+        [NSException raise:NSInvalidUnarchiveOperationException format:@"String missing"];
+
+    return string->string();
+}
+
 static id decodeObject(WKRemoteObjectDecoder *decoder)
 {
     API::String* classNameString = decoder->_currentDictionary->get<API::String>(classNameKey);
@@ -563,6 +583,9 @@
     if (objectClass == [NSInvocation class])
         return decodeInvocation(decoder);
 
+    if (objectClass == [NSString class])
+        return decodeString(decoder);
+
     id result = [objectClass allocWithZone:decoder.zone];
     if (!result)
         [NSException raise:NSInvalidUnarchiveOperationException format:@"Class \"%s\" returned nil from +alloc while being decoded", className.data()];
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to