Give read-only properties proper ownership attributes
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 Jun 2014 17:27:14 +0000 (17:27 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 23 Jun 2014 17:27:14 +0000 (17:27 +0000)
https://bugs.webkit.org/show_bug.cgi?id=134197
<rdar://problem/16830117>

Reviewed by Dan Bernstein.

Also, make WKFrameInfo conform to NSCopying since it's a data-only object and thus intended to be copied.

* UIProcess/API/Cocoa/WKBackForwardList.h:
* UIProcess/API/Cocoa/WKBackForwardListItem.h:
* UIProcess/API/Cocoa/WKFrameInfo.h:
* UIProcess/API/Cocoa/WKFrameInfo.mm:
(-[WKFrameInfo copyWithZone:]):
(-[WKFrameInfo setRequest:]): Deleted.
* UIProcess/API/Cocoa/WKNavigation.h:
* UIProcess/API/Cocoa/WKNavigationAction.h:
* UIProcess/API/Cocoa/WKNavigationAction.mm:
(-[WKNavigationAction setSourceFrame:]):
(-[WKNavigationAction setTargetFrame:]):
* UIProcess/API/Cocoa/WKNavigationActionInternal.h:
* UIProcess/API/Cocoa/WKNavigationResponse.h:
* UIProcess/API/Cocoa/WKScriptMessage.h:
* UIProcess/API/Cocoa/WKUserContentController.h:
* UIProcess/API/Cocoa/WKUserScript.h:
* UIProcess/API/Cocoa/WKWebView.h:

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

14 files changed:
Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/Cocoa/WKBackForwardList.h
Source/WebKit2/UIProcess/API/Cocoa/WKBackForwardListItem.h
Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.h
Source/WebKit2/UIProcess/API/Cocoa/WKFrameInfo.mm
Source/WebKit2/UIProcess/API/Cocoa/WKNavigation.h
Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.h
Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm
Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionInternal.h
Source/WebKit2/UIProcess/API/Cocoa/WKNavigationResponse.h
Source/WebKit2/UIProcess/API/Cocoa/WKScriptMessage.h
Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.h
Source/WebKit2/UIProcess/API/Cocoa/WKUserScript.h
Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h

index ba883ce6a1e3b78b73d7264cdb352347855bd349..1cfb122a427b64f0f661bc3479b9ba10d85db7ce 100644 (file)
@@ -1,3 +1,31 @@
+2014-06-23  Anders Carlsson  <andersca@apple.com>
+
+        Give read-only properties proper ownership attributes
+        https://bugs.webkit.org/show_bug.cgi?id=134197
+        <rdar://problem/16830117>
+
+        Reviewed by Dan Bernstein.
+
+        Also, make WKFrameInfo conform to NSCopying since it's a data-only object and thus intended to be copied.
+
+        * UIProcess/API/Cocoa/WKBackForwardList.h:
+        * UIProcess/API/Cocoa/WKBackForwardListItem.h:
+        * UIProcess/API/Cocoa/WKFrameInfo.h:
+        * UIProcess/API/Cocoa/WKFrameInfo.mm:
+        (-[WKFrameInfo copyWithZone:]):
+        (-[WKFrameInfo setRequest:]): Deleted.
+        * UIProcess/API/Cocoa/WKNavigation.h:
+        * UIProcess/API/Cocoa/WKNavigationAction.h:
+        * UIProcess/API/Cocoa/WKNavigationAction.mm:
+        (-[WKNavigationAction setSourceFrame:]):
+        (-[WKNavigationAction setTargetFrame:]):
+        * UIProcess/API/Cocoa/WKNavigationActionInternal.h:
+        * UIProcess/API/Cocoa/WKNavigationResponse.h:
+        * UIProcess/API/Cocoa/WKScriptMessage.h:
+        * UIProcess/API/Cocoa/WKUserContentController.h:
+        * UIProcess/API/Cocoa/WKUserScript.h:
+        * UIProcess/API/Cocoa/WKWebView.h:
+
 2014-06-23  Gwang Yoon Hwang  <yoon@igalia.com>
 
         Unreviewed, GTK build fix after r170274.
index 3efa8a6f3768e17b809dc37b3d89d8064f6d7530..a8c249e4b0a9cc3595c3e9aee0eeae344a50cef2 100644 (file)
@@ -37,17 +37,17 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract The current item.
  */
-@property (nonatomic, readonly) WKBackForwardListItem *currentItem;
+@property (nonatomic, readonly, strong) WKBackForwardListItem *currentItem;
 
 /*! @abstract The item immediately preceding the current item, or nil
 if there isn't one.
  */
-@property (nonatomic, readonly) WKBackForwardListItem *backItem;
+@property (nonatomic, readonly, strong) WKBackForwardListItem *backItem;
 
 /*! @abstract The item immediately following the current item, or nil
 if there isn't one.
  */
-@property (nonatomic, readonly) WKBackForwardListItem *forwardItem;
+@property (nonatomic, readonly, strong) WKBackForwardListItem *forwardItem;
 
 /*! @abstract Returns the item at a specified distance from the current
  item.
@@ -63,13 +63,13 @@ if there isn't one.
  @discussion The items are in the order in which they were originally
  visited.
  */
-@property (nonatomic, readonly) NSArray *backList;
+@property (nonatomic, readonly, copy) NSArray *backList;
 
 /*! @abstract The portion of the list following the current item.
  @discussion The items are in the order in which they were originally
  visited.
  */
-@property (nonatomic, readonly) NSArray *forwardList;
+@property (nonatomic, readonly, copy) NSArray *forwardList;
 
 @end
 
index 8654cf0785789828e175cf774d655c5205559205..6cd8d278c5e43c4f50a074ebca1443bba2ecb944 100644 (file)
@@ -36,15 +36,15 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract The URL of the webpage represented by this item.
  */
-@property (readonly) NSURL *URL;
+@property (readonly, copy) NSURL *URL;
 
 /*! @abstract The title of the webpage represented by this item.
  */
-@property (readonly) NSString *title;
+@property (readonly, copy) NSString *title;
 
 /*! @abstract The URL of the initial request that created this item.
  */
-@property (readonly) NSURL *initialURL;
+@property (readonly, copy) NSURL *initialURL;
 
 @end
 
index b778607d3fa9efc9bb1147b82c82608dc3fbf267..15ddfac6f95d86d892a1a8f6d4a534936570fbe3 100644 (file)
@@ -35,7 +35,7 @@
  calls.
  */
 WK_CLASS_AVAILABLE(10_10, 8_0)
-@interface WKFrameInfo : NSObject
+@interface WKFrameInfo : NSObject <NSCopying>
 
 /*! @abstract A Boolean value indicating whether the frame is the main frame
  or a subframe.
@@ -44,7 +44,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract The frame's current request.
  */
-@property (nonatomic, readonly) NSURLRequest *request;
+@property (nonatomic, readonly, copy) NSURLRequest *request;
 
 @end
 
index cb82b65e75e88255303bfa037667a3637064fbf9..464295184523fa15f50942fa4fae102083228a44 100644 (file)
@@ -58,9 +58,9 @@
     return _request.get();
 }
 
-- (void)setRequest:(NSURLRequest *)request
+- (id)copyWithZone:(NSZone *)zone
 {
-    _request = adoptNS([request copy]);
+    return [self retain];
 }
 
 @end
index 7aeb2596525b1c6d5f56b4253ae71e402a3ba7c3..e54f4d8ea3562b38109a2aeb7c3bceb1661e459e 100644 (file)
@@ -40,22 +40,22 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract The initial request used to perform the navigation.
  */
-@property (nonatomic, readonly) NSURLRequest *initialRequest;
+@property (nonatomic, readonly, copy) NSURLRequest *initialRequest;
 
 /*! @abstract The navigation's current request.
  @discussion This request may be different from the one returned by
  initialRequest if server-side redirects have occurred.
  */
-@property (nonatomic, readonly) NSURLRequest *request;
+@property (nonatomic, readonly, copy) NSURLRequest *request;
 
 /* @abstract The response to the navigation, or nil if no response has yet
  been received.
  */
-@property (nonatomic, readonly) NSURLResponse *response;
+@property (nonatomic, readonly, copy) NSURLResponse *response;
 
 /* @abstract The error if the navigation failed, or nil if it did not fail.
  */
-@property (nonatomic, readonly) NSError *error;
+@property (nonatomic, readonly, copy) NSError *error;
 
 @end
 
index 2e0f70507461ed9b5ac162cd38437cfeeb6aed05..8cbbbe3d7484ee275faf24a883464b42ff800e26 100644 (file)
@@ -61,11 +61,11 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract The frame requesting the navigation.
  */
-@property (nonatomic, readonly) WKFrameInfo *sourceFrame;
+@property (nonatomic, readonly, copy) WKFrameInfo *sourceFrame;
 
 /*! @abstract The target frame, or nil if this is a new window navigation.
  */
-@property (nonatomic, readonly) WKFrameInfo *targetFrame;
+@property (nonatomic, readonly, copy) WKFrameInfo *targetFrame;
 
 /*! @abstract The type of action that triggered the navigation.
  @discussion The value is one of the constants of the enumerated type WKNavigationType.
@@ -74,7 +74,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract The navigation's request.
  */
-@property (nonatomic, readonly) NSURLRequest *request;
+@property (nonatomic, readonly, copy) NSURLRequest *request;
 
 #if !TARGET_OS_IPHONE
 
index 4bfc3727a7c38051ca09f1f33f58062c5d463870..c95d162c84f0b07e52aebf4d2f0963bc343ef51b 100644 (file)
@@ -134,7 +134,7 @@ static NSInteger toNSButtonNumber(WebKit::WebMouseEvent::Button mouseButton)
 
 - (void)setSourceFrame:(WKFrameInfo *)sourceFrame
 {
-    _sourceFrame = sourceFrame;
+    _sourceFrame = adoptNS([sourceFrame copy]);
 }
 
 - (WKFrameInfo *)targetFrame
@@ -144,7 +144,7 @@ static NSInteger toNSButtonNumber(WebKit::WebMouseEvent::Button mouseButton)
 
 - (void)setTargetFrame:(WKFrameInfo *)targetFrame
 {
-    _targetFrame = targetFrame;
+    _targetFrame = adoptNS([targetFrame copy]);
 }
 
 - (NSURLRequest *)request
index 088036f00f291c3d7e1b5b7840422adfee44f8a7..439b2fb6db44da443baf4dc4bab24f6ba0f29f60 100644 (file)
@@ -35,8 +35,8 @@ struct NavigationActionData;
 
 @interface WKNavigationAction ()
 
-@property (nonatomic, readwrite, strong) WKFrameInfo *sourceFrame;
-@property (nonatomic, readwrite, strong) WKFrameInfo *targetFrame;
+@property (nonatomic, readwrite, copy) WKFrameInfo *sourceFrame;
+@property (nonatomic, readwrite, copy) WKFrameInfo *targetFrame;
 
 @property (nonatomic, readwrite, copy) NSURLRequest *request;
 
index 9393e1ad6cf675c7ce914d0504d9fd8f940d6aa5..e367fb39a302b1cd49c4ee60f133df2f473feeeb 100644 (file)
@@ -42,7 +42,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract The frame's response.
  */
-@property (nonatomic, readonly) NSURLResponse *response;
+@property (nonatomic, readonly, copy) NSURLResponse *response;
 
 /*! @abstract A Boolean value indicating whether WebKit can display the response's MIME type natively.
  @discussion Allowing a navigation response with a MIME type that can't be shown will cause the navigation to fail.
index 0f41de01e4b2e01e5387e9af4f65e298a30fba7d..1871ebcd950125f2094fd4c2361881230195c561 100644 (file)
@@ -42,17 +42,17 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
  @discussion Allowed types are NSNumber, NSString, NSDate, NSArray,
  NSDictionary, and NSNull.
  */
-@property (nonatomic, readonly) id body;
+@property (nonatomic, readonly, copy) id body;
 
 /*! @abstract The web view sending the message. */
 @property (nonatomic, readonly, weak) WKWebView *webView;
 
 /*! @abstract The frame sending the message. */
-@property (nonatomic, readonly) WKFrameInfo *frameInfo;
+@property (nonatomic, readonly, copy) WKFrameInfo *frameInfo;
 
 /*! @abstract The name of the message handler to which the message is sent.
  */
-@property (nonatomic, readonly) NSString *name;
+@property (nonatomic, readonly, copy) NSString *name;
 
 @end
 
index 115e48a14ba00ee1fc595b1995d39ef20bde195b..ab6303be5d5cbc0e484275b8428688f602e4d9eb 100644 (file)
@@ -43,7 +43,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 /*! @abstract The user scripts associated with this user content
  controller.
 */
-@property (nonatomic, readonly) NSArray *userScripts;
+@property (nonatomic, readonly, copy) NSArray *userScripts;
 
 /*! @abstract Adds a user script.
  @param userScript The user script to add.
index 39a733832741ce952a794ea7547578331e234e5a..49b9dad44408c030e4e705456d4a627bfe731bcc 100644 (file)
@@ -45,7 +45,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 @interface WKUserScript : NSObject <NSCopying>
 
 /* @abstract The script source code. */
-@property (nonatomic, readonly) NSString *source;
+@property (nonatomic, readonly, copy) NSString *source;
 
 /* @abstract When the script should be injected. */
 @property (nonatomic, readonly) WKUserScriptInjectionTime injectionTime;
index c39bf975f7215170821a4d5601dfde4f1e2ef2ab..c353148eb8be7d7c37fb36970f9b68ec8fa57ab4 100644 (file)
@@ -56,7 +56,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 
 /*! @abstract A copy of the configuration with which the web view was
  initialized. */
-@property (nonatomic, readonly) WKWebViewConfiguration *configuration;
+@property (nonatomic, readonly, copy) WKWebViewConfiguration *configuration;
 
 /*! @abstract The web view's navigation delegate. */
 @property (nonatomic, weak) id <WKNavigationDelegate> navigationDelegate;
@@ -65,7 +65,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 @property (nonatomic, weak) id <WKUIDelegate> UIDelegate;
 
 /*! @abstract The web view's back-forward list. */
-@property (nonatomic, readonly) WKBackForwardList *backForwardList;
+@property (nonatomic, readonly, strong) WKBackForwardList *backForwardList;
 
 /*! @abstract Returns a web view initialized with a specified frame and
  configuration.
@@ -110,7 +110,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
  @discussion @link WKWebView @/link is key-value observing (KVO) compliant
  for this property.
  */
-@property (nonatomic, readonly) NSString *title;
+@property (nonatomic, readonly, copy) NSString *title;
 
 /*! @abstract The active URL.
  @discussion This is the URL that should be reflected in the user
@@ -118,7 +118,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
  @link WKWebView @/link is key-value observing (KVO) compliant for this
  property.
  */
-@property (nonatomic, readonly) NSURL *URL;
+@property (nonatomic, readonly, copy) NSURL *URL;
 
 /*! @abstract A Boolean value indicating whether the view is currently
  loading content.
@@ -203,7 +203,7 @@ WK_CLASS_AVAILABLE(10_10, 8_0)
 #if TARGET_OS_IPHONE
 /*! @abstract The scroll view associated with the web view.
  */
-@property (nonatomic, readonly) UIScrollView *scrollView;
+@property (nonatomic, readonly, strong) UIScrollView *scrollView;
 #endif
 
 #if !TARGET_OS_IPHONE