Commit Graph

84 Commits

Author SHA1 Message Date
LAgagggggg
0ba47d9a71 Fix crash of iOS FlipperNetworkPlugin (#563)
Summary:
Flipper's network plugin may cause crash on a frequency of about one time per 1~2 days(I think it depends on how many network request we send).
![IMG_3095](https://user-images.githubusercontent.com/24563710/65739973-cc540080-e119-11e9-9e6e-e4a925ecc63c.JPG)

  I assume the crash is caused by part of the code of HTTPParser is not thread-safe, and invoke it asynchronously may cause double-free crash. So I manually ask for HTTPBody synchronously, make the HTTPParser parse the request and cache them in advance, before any possible asynchronous invoking.

## Changelog
  Fix potential crash cause by network plugin.
Pull Request resolved: https://github.com/facebook/flipper/pull/563

Test Plan:
1. Run our App with Flipper integrated
2. Make sure FlipperNetworkPlugin is active
3. It may take days to reproduce the crash

Reviewed By: passy

Differential Revision: D17739327

Pulled By: priteshrnandgaonkar

fbshipit-source-id: e814145c346bd2da1d2f5f87b6a2f7e200f0bf2d
2019-10-04 05:38:05 -07:00
Kfir Schindelhaim
52976f1ee3 Introduce CKMountable protocol
Summary:
- Introduce new base protocol `CKMountable`
  - Contains Layout & Mount methods that have been extracted from `CKComponent`
  - This will allows us to introduce a new lighter version of `CKComponent`, which doesn't rely on Scope/State/Controllers/etc
- Refactor `CKComponentLayout` to work with `CKMountable` instead of `CKComponent`, which will allows us to interop between `CKComponent` and a new type of components.
- Refactor the codebase to support this change

Reviewed By: kevin0571

Differential Revision: D17668253

fbshipit-source-id: 13db5ff4acb37b338e291ca2dd7d67cd25dbc6d2
2019-10-02 08:20:00 -07:00
Andres Suarez
c4c5d453c2 Fix license headers
Reviewed By: scottrice

Differential Revision: D17673481

fbshipit-source-id: 1794e0a6e92e6894b5634b24c6e7910847616261
2019-09-30 15:10:17 -07:00
Ram N
4204562fee Add FlipperKitReactPlugin to podspec
Reviewed By: danielbuechele

Differential Revision: D7277601

fbshipit-source-id: 7a6c3dc1c94715a93f4bd34c9eb90282dcc69184
2019-09-06 07:29:25 -07:00
Roman Gorbunov
eff95991c6 Moving SKHighlightOverlay
Summary: Moving FlipperKitLayoutPlugin/FlipperKitPluginUtils/SKHighlightOverlay to shared folder, so Layout and WorkingRange plugins can depend on it

Reviewed By: kevin0571

Differential Revision: D17156396

fbshipit-source-id: 3f17371f2ab4818924d61e6cfb243f60ad1f2892
2019-09-05 07:31:23 -07:00
Daniel Büchele
b7933aef2e publish react plugin
Summary:
Publishing React Dev tools plugin:
- migrate to TS
- move iOS and JS part to public folder (Android was already)

Reviewed By: passy

Differential Revision: D17164782

fbshipit-source-id: 20ccba71d807df2d33fe5348a62c6ee7f78ae8ba
2019-09-05 03:19:47 -07:00
Aditya Kumar
620383bae3 Add virtual destructor to class with virtual functions but non-virtual destructor
Reviewed By: jdthomas

Differential Revision: D16954508

fbshipit-source-id: 958118843687145c1147ac5beeb2857b21332702
2019-08-22 11:41:26 -07:00
Anatolii Shevchenko
e874e032c6 Remove ; from method implementation definition
Summary: Removing excessive semicolon ";" symbol from method implementation definition.

Reviewed By: adamjernst

Differential Revision: D16912006

fbshipit-source-id: 9c3e778a107e8fd0055f40a95ea9ca58d461e1c5
2019-08-21 15:49:04 -07:00
Oleksii Dykan
dbf0e3db43 Add size prop to layout inspector
Summary: Size is passed as a prop to every `CKComponent` and `CKFlexboxChild`. It is useful to see where it was set exactly

Reviewed By: kevin0571

Differential Revision: D16688496

fbshipit-source-id: 5f8dc39a967ab2d7d89d6a37a8152aa6b59db220
2019-08-07 10:24:19 -07:00
Roman Gorbunov
00e8f43e37 Improvement of live editing
Summary:
Live editing is now working faster.
We had an issue that it took about 5 seconds to see the view changed and 10 seconds to see tha value in the flipper, now it's done immidiately

Reviewed By: priteshrnandgaonkar

Differential Revision: D16500961

fbshipit-source-id: 742ce628a887bab06c1b883d9710c477af2508e7
2019-07-31 03:13:38 -07:00
Cory Wilhite
aa470a9aef Compile out objc_msgSend_stret on 64 bit machines
Summary: objc_msgSend_stret isn't available when building for 64 bit devices so this line breaks. objc_msgSend is the correct function to call in 64 bit, but Flipper doesn't run for devices so its fine either way.

Reviewed By: jasonhotsauce

Differential Revision: D16502377

fbshipit-source-id: cfc20880bcccd086dc34fad74a6eef2c9a17cb17
2019-07-25 16:42:36 -07:00
Roman Gorbunov
a903c7ddc6 CKCenterLayoutComponent live editing
Summary:
CKCenterLayoutComponent's options are now live editable

P.S. Now it takes some time to see the view changed and the new value of everything on flipper side

Reviewed By: kevin0571

Differential Revision: D16458390

fbshipit-source-id: a5344253641633dd8c985549c2d9bc6f64da1f74
2019-07-25 04:03:04 -07:00
Roman Gorbunov
a6b374aba7 CKRatioLayoutComponent live editing
Summary:
CKRatioLayoutComponent's ratio is now live editable

P.S. Now it takes some time to see the view changed and the new value of everything on flipper side

Reviewed By: kevin0571

Differential Revision: D16458380

fbshipit-source-id: 0f06426477b6747f6ad71716dc66e69316b23208
2019-07-25 04:03:03 -07:00
Roman Gorbunov
b697d147d1 CKFlexboxComponent live editing
Summary:
CKFlexboxComponent's insets are now live editable

P.S. Now it takes some time to see the view changed and the new value of everything on flipper side

Reviewed By: kevin0571

Differential Revision: D16379743

fbshipit-source-id: 69bc9b7cb6b2103ff34b5c4489b240ac7562a85d
2019-07-25 04:03:03 -07:00
Roman Gorbunov
f42badeb88 CKInsetComponent live editing
Summary:
CKInsetComponent's insets are now live editable
P.S. Now it takes some time to see the view changed and the new value of insets on flipper side

Reviewed By: kevin0571

Differential Revision: D16338109

fbshipit-source-id: 9c6648e72d55a09df9d715637e82901d1b5dcec8
2019-07-25 04:03:03 -07:00
Roman Gorbunov
f2bc5d3fb2 Generic solution for live editing
Summary: Preparation for making components live editable

Reviewed By: kevin0571

Differential Revision: D16379961

fbshipit-source-id: d0ea3d753eb588fe7b55f2345124427b4a5a58b5
2019-07-25 04:03:03 -07:00
Roman Gorbunov
89911acd84 Made a DataStorage for live editing in flipper
Summary: Theadsafe Data Storage for new insets in CKInsetComponent

Reviewed By: kevin0571

Differential Revision: D16338091

fbshipit-source-id: 3b77652a4d08cfebce115a606af3fc3440a1aca0
2019-07-25 04:03:02 -07:00
Roman Gorbunov
cf1347d2e3 Fixed bug with flipper live editing
Summary:
Fixed bug with live editing
Previously if the meaining of the value was changed in flipper you receive back same value as it was
Now you see correct changed value

Reviewed By: priteshrnandgaonkar

Differential Revision: D16162141

fbshipit-source-id: 1a68ea64603171e952382c5093470d2cc12f7bbe
2019-07-10 12:13:15 -07:00
Roman Gorbunov
8b2a886c19 Fixed a bug with accessibility button
Summary:
Fixed a bug with accessibility button
Now it's pressable

Reviewed By: kevin0571

Differential Revision: D16165294

fbshipit-source-id: 9c6ea464f2faa149aa78c0534c51a0f58bd249ad
2019-07-10 11:40:03 -07:00
Roman Gorbunov
7551b6da04 Added search in text of some components
Summary: Added a possibility to search for the text not only in name and id of components but also in text for all components, that conforms to a protocol <SKTextSearchable>

Reviewed By: priteshrnandgaonkar

Differential Revision: D16108297

fbshipit-source-id: 31da4ac6762c487ef644d62c9576d9eff43e8cd4
2019-07-08 03:43:55 -07:00
John Knox
b0f44d9a9b Add accessibilityIdentifier to iOS layout attributes
Summary: Apparently useful for debugging e2e tests which reference accessibility Identifiers

Reviewed By: passy

Differential Revision: D15874161

fbshipit-source-id: b6a71a8474b52546bd825c0d13c1487688c7a30e
2019-06-18 09:40:19 -07:00
suyimo
eb4de1f3b7 Add protect when save task (#466)
Summary:
Bugfix

Add protect when save task

If local cache resource are valid, we don't create a Task .So here are crash.
Pull Request resolved: https://github.com/facebook/flipper/pull/466

Reviewed By: passy

Differential Revision: D15851816

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 753b3c5c9a6ed4c703c934a89e45fa30df99068c
2019-06-18 03:56:56 -07:00
Rain ⁣
aa649ff48f standardize C-like MIT copyright headers throughout fbsource
Summary:
`/*` is the standard throughout open source code. For example, Firefox uses single /*: https://hg.mozilla.org/mozilla-central/file/21d22b2f541258d3d1cf96c7ba5ad73e96e616b5/gfx/ipc/CompositorWidgetVsyncObserver.cpp#l3

In addition, Rust considers `/**` to be a doc comment (similar to Javadoc) and having such a comment at the beginning of the file causes `rustc` to barf.

Note that some JavaScript tooling requires `/**`. This is OK since JavaScript files were not covered by the linter in the first place, but it would be good to have that tooling fixed too.

Reviewed By: zertosh

Differential Revision: D15640366

fbshipit-source-id: b4ed4599071516364d6109720750d6a43304c089
2019-06-06 19:40:28 -07:00
Oleksii Dykan
cb79b3b9ba Fix layout plugin for CKFlexboxComponent and CKInsetComponent
Summary: Importing the extensions fixes the fact that responds to selector was returned false for `sonar_additionalDataOverride` selector

Reviewed By: priteshrnandgaonkar

Differential Revision: D15535414

fbshipit-source-id: ab465a1aab36cccd2129c5b0c29a7872dfd65015
2019-05-29 04:59:13 -07:00
Pritesh Nandgaonkar
7576e1c61d Fix watch tab bug
Summary:
This solves the watch tab crash discussed here D15266478, which got reverted.

Bug: [Here](diffusion/FBS/browse/master/xplat/sonar/iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.mm;57c596a566bec49e343af51b93df65ed1377a2b9$338), when the node is `CKComponentRootView` the `[descriptor childForNode: node atIndex: i]` returns `SKComponentLayoutWrapper`. In the next iteration of the loop, node is `SKComponentLayoutWrapper`, the  `[descriptor childForNode: node atIndex: i]` returns `CKComponentRootView`, and hence the infinite recursion

I also tested T44431259, it is not regressed.

Reviewed By: passy

Differential Revision: D15451821

fbshipit-source-id: 25f10112f5f52bb1fa964316a4c7e91a3b29156d
2019-05-23 03:50:11 -07:00
Pritesh Nandgaonkar
0a514c3618 Back out "[Flipper] Use the tree node idenitifer as the component identifier"
Summary:
Original commit changeset: 4d83c1bee3fd

BUG:

{F159187385}

Reviewed By: passy

Differential Revision: D15415247

fbshipit-source-id: 6209a2c9c2b5da6b9405bf01e3cb7622b3431475
2019-05-20 09:46:50 -07:00
Jonathan Ballerano
bcc05296ef Back out "Fix the crash in the watch tab"
Summary: This resolves a crash related to the contents of certain CKComponents, which was apparently introduced by D15266478

Differential Revision: D15406260

fbshipit-source-id: efd1ad1a1bcb41451c56b74c240ad2dca069deb0
2019-05-17 22:42:35 -07:00
Pritesh Nandgaonkar
821232a9c6 Fix the crash in the watch tab
Summary:
BUG:

{F158264042}

Context: The code entered an infinite loop till it crashed. In the implementation of `- (SKSearchResultNode *)searchForQuery:(NSString *)query fromNode:(id)node withElementsAlreadyAdded:(NSMutableSet<NSString *> *)alreadyAdded`, we recurse through the child. In the case when the view was `CKRootComponent` it created a `SKComponentLayoutWrapper` in the call to `[descriptor childForNode: node atIndex: i];`. This wrapper's descriptor used to return the very same view from which it was created when it's children were asked. So this led to an infinite loop.

Reviewed By: kfirapps

Differential Revision: D15266478

fbshipit-source-id: 8035209746b7cb4b8773e2fcbdd4c0a148191304
2019-05-10 09:53:18 -07:00
Pascal Hartig
2885f87189 Update copyright headers (#433)
Summary:
Style is modified, so I think it's okay to add
our header there too.
Pull Request resolved: https://github.com/facebook/flipper/pull/433

Differential Revision: D15213091

Pulled By: passy

fbshipit-source-id: c02b67b022f12fdb3e0da39a308d33b073dcb9d3
2019-05-04 11:16:23 -07:00
Pascal Hartig
65c0dd1a86 Add missing swift/objc headers
Summary: Per title

Reviewed By: danielbuechele

Differential Revision: D15199200

fbshipit-source-id: a4251311d7fd2d22d39ba89ba0052514abbc3e2c
2019-05-03 09:13:17 -07:00
Pascal Hartig
bbee7a3357 Update iOS license headers (and more)
Summary: Add the affiliates bit that the linter is checking for.

Reviewed By: jknoxville

Differential Revision: D15164826

fbshipit-source-id: 500ffe89ec0c2fd3acfbc374408d16a337cecfa4
2019-05-02 03:28:07 -07:00
Kfir Schindelhaim
b78dbb75b2 Use the tree node idenitifer as the component identifier
Summary: Now that we always build the component tree (CKTreeNode) in debug, we can just use the tree node identifier as the component identifier instead of creating a very long string.

Reviewed By: fabiomassimo

Differential Revision: D15046568

fbshipit-source-id: 4d83c1bee3fd7ac85ee4bd6e9f4f47812509e0c3
2019-04-26 10:15:02 -07:00
Kfir Schindelhaim
1c35b705eb Use the cached layout wrapper if it exists
Summary:
- We cache the layout wrapper, but never used it actually.
- This should make the Layout plugin faster.

Reviewed By: fabiomassimo

Differential Revision: D15046463

fbshipit-source-id: b61f28d9a981e782b76abe78037d37665f7d8ba3
2019-04-26 10:15:02 -07:00
Kfir Schindelhaim
c764322c1a Layout plugin integration for reused nodes information
Summary:
- Expose the reused component counter into the layout plugin

https://pxl.cl/wVJf

Reviewed By: priteshrnandgaonkar

Differential Revision: D14952906

fbshipit-source-id: 784a02dbf44d80d95fdd3a804f58ecd0f51a3e1f
2019-04-26 10:15:02 -07:00
Scott Hoyt
7bbb8c10c4 Extend FKUserDefaultsPlugin to support app suite user defaults.
Summary:
`FKUserDefaultsPlugin` is initialized with an `appSuiteName` but doesn't use this to monitor the app suite user defaults. This adds that capability.

In Flipper, "App Suite UserDefaults" defaults will show up in the drop down selector for user defaults.

Reviewed By: priteshrnandgaonkar

Differential Revision: D14922399

fbshipit-source-id: 3876976ccd0968fdec35f7605107202e1f9d7cee
2019-04-24 10:22:27 -07:00
Kevin Lin
7f20c34e34 Remove unneeded TODO
Summary: Remove unneeded TODO.

Reviewed By: priteshrnandgaonkar

Differential Revision: D14882889

fbshipit-source-id: cbcb26bb90a315b5c36f4573bfcb416b8a0b4c46
2019-04-11 03:50:49 -07:00
Pritesh Nandgaonkar
8a19a859f2 Update Componentkit, Yoga, YogaKit
Summary: Fixed the broken master for flipper iOS  oss

Reviewed By: jknoxville

Differential Revision: D14686908

fbshipit-source-id: abdcacf279449f83c98d1635c65ff8759ee17926
2019-04-01 06:59:59 -07:00
Andrey Mishanin
a0e0b434ee Removed UIView (CKComponentAttachController)
Summary: Remove ObjC categories so we can strip dead code

Reviewed By: kfirapps

Differential Revision: D14665041

fbshipit-source-id: 243dee61a5b7cfd854191bfb5fa3a570b4ac1a4b
2019-03-28 09:23:41 -07:00
Kevin Lin
deef14d3a2 Rename CKComponentDataSourceAttachController to CKComponentAttachController
Summary:
`CKComponentDataSourceAttachContrlller` doesn't have to be tied with datasource. It's totally legit to use it in hosting view as well.
Renaming it to `CKComponentAttachController` and move it to `Core` folder.

Reviewed By: priteshrnandgaonkar

Differential Revision: D14526150

fbshipit-source-id: f48a8d27a3bfa5170e22a397fe1b32e806bc3c55
2019-03-20 06:09:22 -07:00
Pritesh Nandgaonkar
af317eed2b Export and import all the nodes
Summary:
This diff does the following

- Support to export the entire view hierarchy for iOS
- Android is not supported yet
- This diff adds a call `getAllNodes` to the client side of iOS, which returns the entire view hierarchy
- Currently the search doesn't work on the imported layout plugin data. Also the imported layout plugin data doesn't expand the way it does when component is mounted, reason being the client passed to the plugin is not functional for the archived case

I will work on fixing the last points in the next diffs stacked on the current one.

For Android:
- Currently the export function will export whatever is currently displayed on the Flipper app, not the entire view hierarchy

Support for Android will also come up in later diffs.

Reviewed By: jknoxville

Differential Revision: D14209157

fbshipit-source-id: 3ad3e39edfd994913dc19cc239bfbbe011a9757c
2019-02-28 09:40:50 -08:00
John Knox
9b6db1f482 Respond on exceptions thrown when on main thread
Summary: Changes FlipperPerformBlockOnMainThread to take a responder, and respond with an error if an exception is caught.

Reviewed By: passy

Differential Revision: D14066982

fbshipit-source-id: 70135bf58171684bcd013c66d9deec366aed36f5
2019-02-14 06:24:38 -08:00
Pritesh Nandgaonkar
f47de92117 Build sample app through BUCK
Summary: This diff adds capabilty to build sample app through BUCK.

Reviewed By: passy

Differential Revision: D13697307

fbshipit-source-id: d7008bb4709b13384f65051631b365a0eceddfff
2019-01-17 07:27:33 -08:00
Scott Wolchok
6d4728c41f Rename FB_LINK_REQUIRE to FB_LINK_REQUIRE_CATEGORY
Reviewed By: adamjernst

Differential Revision: D13577664

fbshipit-source-id: 6a81e097840ccc66f55641990ad63729345b49e2
2019-01-08 16:53:06 -08:00
Pritesh Nandgaonkar
2c9feb40e9 Remove crashreporter plugin iOS implementation
Summary: Removes the iOS implementation of crash reporter plugin as its implemented as desktop plugin

Reviewed By: adamjernst

Differential Revision: D13451980

fbshipit-source-id: 19cca52a00bb4a6d350eff91ac405f6dd3b07818
2018-12-18 13:42:40 -08:00
Pritesh Nandgaonkar
e3fb1e1d84 Disable crash reporter plugin for iOS and update callstack from array to string
Summary:
This diff does the following

- Comments out the code in iOS which sends the message to the desktop side
- Also comments out the part where signal handler is initialised, as we no longer need it. I will remove the iOS implementation completely in next few diffs
- Updated the JS side to expect call stack as a string instead of an array
- Updated the android side to send callstack as a string

I have commented out the code for crash reporter plugin of iOS as for iOS I will be adding a watchman  to a directory where crash logs are dumped. The diff related to this is in the stack

Reviewed By: passy

Differential Revision: D13424824

fbshipit-source-id: b1105da912292bf73cff948206c031de9b059abd
2018-12-18 13:42:40 -08:00
Qichuan
d7ecd3af5a Fixe the iOS UserDefaultsPlugin (#340)
Summary:
The `getAllSharedPreferences` API is not implemented in the iOS UserDefaultsPlugin and thus the data is not shown in the `Shared Preference Viewer`.

This PR implements the missing API and present the Standard UserDefaults data from the target application.
Pull Request resolved: https://github.com/facebook/flipper/pull/340

Reviewed By: danielbuechele

Differential Revision: D13464765

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 8c6cf4e9f7094fcf75c71cce43cb6c34f9f957e7
2018-12-17 11:08:29 -08:00
Pritesh Nandgaonkar
5894ad3834 Catch signal errors
Summary: This PR adds support to catch and report signal errors to the flipper. It also reports the callstack. Please look at the video in the test plan to understand the what it does.

Reviewed By: jknoxville

Differential Revision: D13328818

fbshipit-source-id: 304a68f47bb5ca5b0014c8b7d30f6a6fc2b6d147
2018-12-07 07:37:55 -08:00
Daniel Abramowitz
0f5cee4fec Reenable SubDescriptors after fixing a bug on the flipper client dealing with empty strings
Summary: Previously an empty string would crash the flipper client. Now that we handled that ok, we can reenable the descriptors.

Reviewed By: jknoxville

Differential Revision: D13257534

fbshipit-source-id: 09be4834d5a7023b2fa4e2bee7e57e412916120b
2018-11-30 10:50:32 -08:00
Pritesh Nandgaonkar
3183e56560 Add crash reporter plugin to wilde with a gatekeeper
Summary: Adds crash reporter plugin in wilde under a gatekeeper `flipper_crash_reporter_plugin`. By default all the employees will be part of this gatekeeper

Reviewed By: passy

Differential Revision: D13258265

fbshipit-source-id: 1baa2a342f492781d8fb3e86c2a30140537c23f1
2018-11-30 07:19:46 -08:00
Pritesh Nandgaonkar
d475a50f2a Crash reporter plugin
Summary: iOS side of crash reporter plugin

Reviewed By: jknoxville

Differential Revision: D13176725

fbshipit-source-id: be104958c5e26aa67709a33ef43c0b99600ca2b7
2018-11-26 03:43:26 -08:00