Commit Graph

3963 Commits

Author SHA1 Message Date
GitGadd
f52bc786c0 Respect hitTestSlop when determining if a tracked touch is inside for ASControlNode (#2896) 2017-01-13 11:07:50 -08:00
Adlai Holler
30194fe41f Remove duplicate declarations from last PR (#2893) 2017-01-12 14:41:53 -08:00
Leo Tumwattana
4e80acc6e1 [ASEditableTextNode] Maximum number of lines to display (#2777) (#2867)
* WIP

* Calculate TextKit Height based on max lines to display

* Remove TODO

* Calculate height based on lineFragmentRect

* Fixes issue with calculated width

* Resolve TextKit stack threading issues

* Removes blank lines

* Open brace on next line

* setNeedsLayout in case of changes on live node
2017-01-12 13:47:44 -08:00
Garrett Moon
daa12a867e Need an autorelease pool (#2890) 2017-01-11 17:00:27 -08:00
Adlai Holler
7c4ee350b0 Use Native convertRect:, convertPoint: Methods to Handle Nil Cases (#2889)
* When converting rects, points on loaded nodes, call into UIKit/CoreAnimation

* Always use view-ish behavior

* Improve nil window handling, add documentation
2017-01-11 13:44:35 -08:00
aaronschubert0
5b104c09a7 Update CocoaPod badges to be dynamic. (#2886)
This updates the values automatically, which is perfect to reflect the growth of ASDK. I've wanted to do this for ages but the shield.io API didn't have the support up till now. We lose some granularity but I think this is worth it.
2017-01-11 13:44:22 -08:00
Adlai Holler
42f0288fda Account for table view cell separator when reporting height (#2883) 2017-01-11 12:48:16 -08:00
Adlai Holler
98a95a6907 Pin collection cellNode.frame = contentView.bounds (#2884) 2017-01-11 12:47:12 -08:00
Michael Schneider
cdf7f70747 [ASDimension] Simplify header file to focus on the most essential types for app developers. (#2794)
* First round of cleanups for ASDimension.mm/h

* Add ASDimensionDeprecated and ASDimensionInternal to Copy Files build phase
2017-01-10 10:05:15 -08:00
Saif Al-Dilaimi
c85aa11dbb Adding section to passthrough properties (#2847)
* added accessoryType to ASCellNode

* Moved the passthrough properties in an own section in ASEditableTextNode

* added documentation and reverted ASEditableCellNode changes

* fixed code signing

* adding seperatorInset property as a passthrough property

* revert changes to project file

* moved setting properties to setNode:

* moved clipsToBounds to setNode
2017-01-09 18:26:51 -08:00
Garrett Moon
c383b52e78 Print out cocoapods environment to help with #2881 (#2882) 2017-01-09 13:36:12 -08:00
Adlai Holler
92bbfc112f Generate an iOS 9 reference image for testTextContainerInsetIsIncludedWithSmallerConstrainedSize (#2880) 2017-01-09 12:55:31 -08:00
Huy Nguyen
6a8cc50328 Remove Buck abstract target in Podfile (#2878) 2017-01-09 12:53:23 -08:00
Huy Nguyen
3761d8b0c3 ASVideoNode should play when its player is ready and if it is expected to play (#2876)
- When a video node is first visible, it's player is called to play if auto play flag is on. However, the player might not be ready by that time, especially when the video is loaded on a slow network. The player just continues loading its asset.
- When the player is ready, we should check if it is expected to be playing and if true, try to play again.
2017-01-09 12:02:00 -08:00
Garrett Moon
202c947be9 [ASNetworkImageNode] Don't lock while calling downloader (#2864)
* Don't lock while calling downloader

Addresses #2785
To avoid performance issues, we should avoid locking the downloader.
To achieve this we need to do some kinda gross things. Essentially
the cost is the code is more complex and potentially far less performant
in edge cases. In testing, edge cases are nearly never hit, but I'm not
sure how good I feel about the cost in code complexity. This exacerbates
the locking issues in ASNetworkImageNode:

1. There is no convention for which methods lock.
2. There's no indication which vars are only set on init and therefore
safe to access except in the class extension definition.

* Shouldn't have checked in product changes.

* Using ivar instead of local var copied within lock.
2017-01-05 15:22:27 -08:00
David Robles
2bc701d23f Copy ASTextNode’s implementation of placeholderImage into ASImageNode in order to fix the usage of placeholderColor. (#2866) 2017-01-05 14:59:11 -08:00
Huy Nguyen
be6faa107a Support Buck build (#2849)
* Support Buck build

* Simplify pod_install hook and buck-file dir's structure

* Update PINRemoteImage's BUCK

* Frameworks linking:
- Weak linking Photos and MapKit.
- Revisit //:Tests' list.
2017-01-04 14:11:28 -08:00
Adlai Holler
513b9f4184 Remove unused and unusable implementations of moveItem: and moveSection: (#2863) 2017-01-04 14:04:56 -08:00
Adlai Holler
d65fe8b5fa Disable UICollectionView prefetching to improve scroll performance (#2861) 2017-01-04 13:30:23 -08:00
Huy Nguyen
89d4193757 Open source pi_imageNamed methods (#2859) 2017-01-04 10:57:23 -08:00
Adlai Holler
23c81b150d Disable testThatRootPagerNodeDoesGetTheRightInsetWhilePoppingBack (#2857) 2017-01-03 14:55:11 -08:00
Adlai Holler
4a6ba2761b ASDataController: Correctly Handle Nil IndexPath in nodeForIndexPath: Methods (#2856)
* ASDataController: Correctly handle fetching node at nil index path (return nil).

* Be more aggressive, in order to avoid needlessly waiting for updates to complete
2017-01-03 14:45:16 -08:00
Huy Nguyen
99c5021be7 Remove duplicated _delegate ivar in ASVideoNode (#2844) 2017-01-01 18:42:41 -08:00
Adlai Holler
2f7925544b Add a failing unit test for the automatic subnode management range issue (#2826) 2016-12-28 11:22:43 -06:00
Scott Goodson
e264d94dde [ASScrollNode] Fix a minor error in ASScrollNode sizing. 2016-12-27 13:45:34 -08:00
Adlai Holler
a426d99c74 Remove irritating layout attributes assertions (#2828) 2016-12-25 11:43:34 -05:00
Hannah Troisi
0a86a6b980 [ASVideoNode] Add missing strong attributes (#2834)
* fix missing strong attribute

* change strong to copy
2016-12-24 23:35:27 -08:00
Adlai Holler
2ea7d4c1c0 By default, capture the current animation enabledness for collection/table updates (#2827) 2016-12-23 09:46:49 -05:00
Huy Nguyen
c1157084ca Clean up ASStackPositionedLayout (#2817)
- Remove lastChildOffset. It's unncessary after #2627.
- Remove the version of `stackedLayout()` that takes 1 less param. Isn't worth the complexity.
2016-12-22 16:02:57 -05:00
Adlai Holler
57913b8578 Range Controller Uses Last Scroll Direction, Defaults to Down/Right (#2808)
* Test that the initial range bounds are what we expect

* Use the user's previous scroll direction in the range controller

* Remove flow layout assertion
2016-12-22 15:48:57 -05:00
appleguy
30924d976f [ASDataController] Ensure ASRangeController has an opportunity to update visible nodes before they're deleted by -reloadData path. (#2815)
This change is specific to the reloadData path, which had the last-known occurrence of "deallocated while marked visible".

https://github.com/facebook/AsyncDisplayKit/issues/2711
2016-12-21 19:23:27 -08:00
Michael Schneider
7872cfb5a4 Reverting back _finishOrCancelTransition that was mistakingly moved in a recent PR (#2820) 2016-12-21 11:24:34 -08:00
Adlai Holler
bdd1077c18 Use NS_ENUM for video enumerated types (#2819) 2016-12-21 13:30:16 -05:00
Chris Danford
ecef8edfdd Add locking around setting weakCacheEntry ivar (#2812) 2016-12-21 13:14:14 -05:00
Marvin Nazari
3506cec1c0 [ASVideoPlayerNode] Added an optional full screen button (#2688)
* full screen button for ASVideoPlayerNode

* fixed a small issue when disabling controlsDisabled is set

* styling fixed

* make videoNode public on ASVidePlayerNode

* [ASVideoPlayerNode] fixed an issue when re-enabling the controls the duration time label didn't updated correctly

* [ASVideoPlayerNode] Check if CMTime is valid before setting the labels
2016-12-21 13:09:57 -05:00
Garrett Moon
69e6f4e387 This should mirror the output you get from installing via Carthage. (#2801) 2016-12-21 13:05:48 -05:00
Huy Nguyen
f52275b9ba Annotate the code that records mutex owner and level of ownership in ASThread (#2809)
* Annotate the code that records mutex owner and level of ownership in ASThread

* Fix typo in ASThread
2016-12-21 12:49:55 -05:00
Garrett Moon
bec299fa87 Update to 2.0.1 2016-12-20 14:57:38 -08:00
Garrett Moon
4ae2948d53 These messages must be called on main. (#2814) 2016-12-20 14:29:32 -08:00
Huy Nguyen
9357f54344 Support visibility events in ASScrollNode (#2799)
* Support visibility events in ASScrollNode

* Sort imports in ASScrollNode.mm
2016-12-20 10:26:01 -08:00
Adlai Holler
3e53d26686 Ensure that all nodes are deallocated inside the thrash testing method to avoid polluting other tests (#2800) 2016-12-19 18:45:57 -05:00
David Robles
498e5a9403 Assert when attempting to set a nil background / overlay layout element. (#2796) 2016-12-19 17:41:45 -05:00
Adlai Holler
eea5ddac3e Range Controller Explicitly Marks Disappeared Nodes as Invisible (#2805)
* Improve visibility handling for range-managed nodes

* Tweak ASWeakSet & the test

* Put back a few things that are pending a different diff

* Add a test

* Ensure we update visible nodes, even if there are no new ones
2016-12-19 17:38:27 -05:00
haritowa
64ee8dbffb [ASDisplayNode Deallocation] Fix for crash when certain types are used as instance variables. (#2803)
* Fix https://github.com/facebook/AsyncDisplayKit/issues/2802

* Change nil to NULL
2016-12-19 17:06:23 -05:00
Huy Nguyen
f7a0ac9760 [ASThread][ASDisplayNode] Detect and avoid deadlocks caused by upward lock gathering in didEnter/Exit states (#2764)
* Implement mutex ownership and use it to check potential upward lock gathering

* Don't hold instance lock and call willEnterHierarchy/didExitHierarchy of ASDisplayNode
- This can cause deadlocks (e.g #2605) if subsequent methods, that are implemented by developers, walk up the node tree.
- This is a way to keep the optimizations introduced in 9e87813 while making sure the locking situation is a bit safer.

* More lock ownership assertions in ASDisplayNode

* Document main thread contract  of -clearContents

* ASNetworkImageNode shoud not call setNeedsPreload while holding instance lock
- This helps to avoid potentially deadlocks caused if the node (esp in case it's a subclass of ASNetworkImageNode) walks up the tree in didEnterPreloadState, for example to build logging context.

* ASVideoNode should not call setNeedsPreload while holding instance lock
- This helps to avoid potentially deadlocks caused if the node (esp. if it's a subclass of ASVideoNode) walks up the tree in didEnterPreloadState, for example to build logging context.

* Don't hold instance lock for the entire insert subnode operation
- The recursive lock should not be held throughout `_insertSubnode:atSubnodeIndex:sublayerIndex:andRemoveSubnode:`. The method instead should manage the lock itself and acquire it as shortly as possible. The reason is that this method calls many methods outside the scope of `self`. `[subnode __setSupernode:self]` is especially troublesome because it causes the subnode to migrate to new hierarchy and interface states, which triggers `didEnter/Exit(.*)State` methods. These methods are meant to be overriden by subclasses. Thus they might walk up the node tree and potentially cause deadlocks, or they perform expensive tasks and cause the lock to be held for too long.
- Other methods that call this method should release the lock before doing so.

* Lock getter and setter of `synchronous` flag

* Address comment in ASVideoNode

* Add main thread assertions to methods that change asset and assetURL of ASVideoNode

* Explain CHECK_LOCKING_SAFETY flag

* More thread and locking assertions in ASVideNode
- It's not safe to call `-[subnode __setSupernode:self]` while holding instance lock of soon-to-be supernode (e.g `self`).
- It's also not safe to call `[subnode __setSupernode:nil]` while holding the instance lock of the old supernode (e.g `self`).
- did(Enter|Exit)(.*)State methods are always called on main. Add main thread assertions to indicate that.

* Minor change in explanation of CHECK_LOCKING_SAFETY flag
2016-12-19 12:11:26 -08:00
Huy Nguyen
546925b6d6 Lock and unlock __instanceLock__ directly for a Minor perf win in ASImageNode (#2797)
- Suggested by @appleguy in #2778
2016-12-19 12:10:40 -08:00
Huy Nguyen
c0ae709b88 [ASDisplayNode][ASImageNode] Small refactorings (#2778)
* Comment out template code and fix another comment in ASDisplayNode

* Release instance lock a bit sooner and fix indentation in ASImageNode
2016-12-18 20:57:35 -08:00
Hannah Troisi
a59a0f0a31 don't allow nil background / overlay layout elements (#2795) 2016-12-18 12:25:57 -08:00
David Hart
3b2e53fbe9 Fixed Carthage build error (#2761) 2016-12-18 00:38:29 -08:00
Garrett Moon
b1094303b5 Need to forward protocol support too. (#2784) 2016-12-18 00:36:05 -08:00