Summary:
[gradle] Remove dokka plugin
This is currently breaking our jetpack-compose build and blocks the entire release
as a consequence: https://github.com/facebook/flipper/issues/4970
There are all sorts of workarounds but they require changing the java target
which could have other downstream consequences: https://github.com/Kotlin/dokka/issues/2956
We don't actually rely on these artefacts at all, so it's probably safe to just disable this.
Closes https://github.com/facebook/flipper/issues/4970
Pull Request resolved: https://github.com/facebook/flipper/pull/4995
Test Plan: ./gradlew publishToMavenLocal
Reviewed By: antonk52
Differential Revision: D48062872
Pulled By: passy
fbshipit-source-id: aef0696d5ac83dd50bcbb96b0552f9b222f5a566
Summary: This is never identity hash code for declarative framework so this default impl is just a source of bugs, including this one.
Reviewed By: lblasa
Differential Revision: D47754625
fbshipit-source-id: 470aab084c82fa847f25116342021a79d52b7c67
Summary:
Bumps [org.jetbrains.kotlin:kotlin-reflect](https://github.com/JetBrains/kotlin) from 1.8.22 to 1.9.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/releases">org.jetbrains.kotlin:kotlin-reflect's releases</a>.</em></p>
<blockquote>
<h2>Kotlin 1.9.0</h2>
<h2>Changelog</h2>
<h3>Analysis API</h3>
<h4>New Features</h4>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57930"><code>KT-57930</code></a> Analysis API: provide an API for extending Kotlin resolution</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57636"><code>KT-57636</code></a> K2: Add the return type of K2 reference shortener AA <code>ShortenCommand::invokeShortening()</code> e.g., <code>ShorteningResultInfo</code> to allow callers to access the shortening result PSI</li>
</ul>
<h4>Fixes</h4>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58249"><code>KT-58249</code></a> Analysis API: Disable error logging for FE10 implementation of resolveCall when resolve is not successful</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55626"><code>KT-55626</code></a> Impossible to restore symbol by psi from script file</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57314"><code>KT-57314</code></a> LL FIR: Combine <code>LLFirProvider$SymbolProvider</code>s in session dependencies (optimization)</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55527"><code>KT-55527</code></a> K2 IDE: Rewrite KtScopeContext class to allow to handle each scope separately</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55329"><code>KT-55329</code></a> LL FIR: Unexpected ACTUAL_WITHOUT_EXPECT error on constructor and function declaration</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-50732"><code>KT-50732</code></a> LL API: fix compiler based tests</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57850"><code>KT-57850</code></a> K2: contract violation due to SymbolLightAccessorMethod.propertyAccessorSymbol</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-56543"><code>KT-56543</code></a> LL FIR: rework lazy transformers so transformers modify only declarations they suppose to</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-56721"><code>KT-56721</code></a> K2: FirExtensionDeclarationsSymbolProvider: java.lang.IllegalStateException: Recursive update</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-50253"><code>KT-50253</code></a> Analysis API: Solve issues with ProcessCancelledException</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-56800"><code>KT-56800</code></a> K2 IDE: optimize deprecation calculation for symbols</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55006"><code>KT-55006</code></a> Analysis API does not transform Java type refs for callable symbol return types</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57256"><code>KT-57256</code></a> AA FIR: Reduce lazy resolve phase for deprecation status</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57619"><code>KT-57619</code></a> K2: CFG for class initializer is not correctly built in reversed resolve mode</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58141"><code>KT-58141</code></a> K2: AA FIR: impossible to restore symbol for declaration with annotation with argument inside type</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57462"><code>KT-57462</code></a> Symbol Light Classes: SymbolLightFieldForProperty should retrieve annotations not from KtPropertySymbol, but from the corresponding backing field</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-54864"><code>KT-54864</code></a> Analysis API: add function to get expect KtSymbol list by actual KtSymbol</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-56763"><code>KT-56763</code></a> Analysis API: <code>.KtSourceModuleImpl is missing in the map.</code> on symbol restore when symbol cannot be seen from the use-site module</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-56617"><code>KT-56617</code></a> Analysis API: optimize KtFirSymbolProviderByJavaPsi.getNamedClassSymbol</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-54430"><code>KT-54430</code></a> K2: .getAllOverriddenSymbols() returns invalid results</li>
</ul>
<h3>Backend. Native. Debug</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55440"><code>KT-55440</code></a> Kotlin/Native debugger: inline function parameters are not visible during debugging</li>
</ul>
<h3>Backend. Wasm</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58293"><code>KT-58293</code></a> Wasm: ReferenceError: e is not defined in kotlin.test.jsThrow</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58931"><code>KT-58931</code></a> Wasm tests are failing to start on Kotlin 1.9.0-Beta</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58188"><code>KT-58188</code></a> Restore binary compatibility of PlatformDiagnosticSuppressor.shouldReportUnusedParameter</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57136"><code>KT-57136</code></a> K/Wasm: Restrict non-external types in JS interop</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57060"><code>KT-57060</code></a> Clarify the lack of support for dynamic in Kotlin/Wasm</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-56955"><code>KT-56955</code></a> K/Wasm: Support restricted version of K/JS <code>js(code)</code></li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57276"><code>KT-57276</code></a> Wasm: "Body not found for function" error when compiling konform library with Kotlin/Wasm support</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-56976"><code>KT-56976</code></a> K/Wasm bug with calling override of external function with default parameters</li>
</ul>
<h3>Compiler</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md">org.jetbrains.kotlin:kotlin-reflect's changelog</a>.</em></p>
<blockquote>
<h2>1.8.21</h2>
<h3>Compiler</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57848"><code>KT-57848</code></a> Native: compilation of dynamic/static library fails with Xcode 14.3</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57875"><code>KT-57875</code></a> Native compilation failure: Suspend functions should be lowered out at this point, but FUN LOCAL_FUNCTION_FOR_LAMBDA</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57946"><code>KT-57946</code></a> KAPT: "RuntimeException: No type for expression" with delegate</li>
</ul>
<h3>JavaScript</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57356"><code>KT-57356</code></a> KJS: StackOverflowException on <a href="https://github.com/JsExport"><code>@JsExport</code></a> with type parameters referring to one another</li>
</ul>
<h3>Tools. Compiler plugins. Serialization</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58067"><code>KT-58067</code></a> Serialization: NullPointerException caused by <a href="https://github.com/Contextual"><code>@Contextual</code></a> property with type with generic</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57730"><code>KT-57730</code></a> Serialization: "IllegalStateException: Serializer for element of type <!-- raw HTML omitted -->.Foo has not been found" caused by serialization of Java type</li>
</ul>
<h3>Tools. Gradle. JS</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-57766"><code>KT-57766</code></a> KJS / Gradle "Module not found: Error: Can't resolve 'kotlin-kotlin-stdlib-js-ir'" when using "useEsModules"</li>
</ul>
<h3>Tools. Kapt</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58027"><code>KT-58027</code></a> Kotlin 1.8.20 kapt issue "null: KtCallExpression: build()"</li>
</ul>
<h3>Tools. Maven</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58048"><code>KT-58048</code></a> Maven: "Too many source module declarations found" after upgrading to 1.8.20</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-58101"><code>KT-58101</code></a> 'Unable to access class' in kotlin-maven-plugin after updating to Kotlin 1.8.20</li>
</ul>
<h2>1.8.20</h2>
<h3>Analysis API</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55510"><code>KT-55510</code></a> K2: Lost designation for local classes</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55191"><code>KT-55191</code></a> AA: add an API to compare symbol pointers</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55487"><code>KT-55487</code></a> K2: symbol pointer restoring doesn't work for static members</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55336"><code>KT-55336</code></a> K2 IDE: "java.lang.IllegalStateException: Required value was null." exception while importing a compiled JPS project</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55098"><code>KT-55098</code></a> AA: KtDeclarationRenderer should render a context receivers</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-51181"><code>KT-51181</code></a> LL API: errors for SAM with suspend function from another module</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-50250"><code>KT-50250</code></a> Analysis API: Implement Analysis API of KtExpression.isUsedAsExpression</li>
<li><a href="https://youtrack.jetbrains.com/issue/KT-54360"><code>KT-54360</code></a> KtPropertySymbol: support JvmField in javaSetterName and javaGetterName</li>
</ul>
<h3>Analysis API. FE1.0</h3>
<ul>
<li><a href="https://youtrack.jetbrains.com/issue/KT-55825"><code>KT-55825</code></a> AA FE1.0: stackoverflow when resolution to a function with a recursive type parameter</li>
</ul>
<h3>Analysis API. FIR</h3>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="bcf27812cd"><code>bcf2781</code></a> Add ChangeLog for 1.9.0</li>
<li><a href="d372470550"><code>d372470</code></a> Don't get BuildScanExtension when buildScan report is disabled</li>
<li><a href="0ec76786a6"><code>0ec7678</code></a> [Gradle, JS] Return back deprecated methods for compatibility</li>
<li><a href="2427b51ba8"><code>2427b51</code></a> Relocate aalto-xml and stax2-api dependencies in embeddable compiler (KT-59631)</li>
<li><a href="56a7789f1d"><code>56a7789</code></a> Revert "[Gradle] Fix invalidating iOS framework after import"</li>
<li><a href="8cf1abc294"><code>8cf1abc</code></a> Add the possibility to omit explicitly specifying a version in annotationProc...</li>
<li><a href="4823fc3c64"><code>4823fc3</code></a> [Gradle] GranularMetadataTransformation: Collect moduleIds in ProjectData for...</li>
<li><a href="0d1932eab6"><code>0d1932e</code></a> [Gradle] Implement Future<T>.map(transform)</li>
<li><a href="bbf64b14d7"><code>bbf64b1</code></a> [Gradle] Implement KT59446TransformationOnTransitiveJavaDependencyTest</li>
<li><a href="54b11e3a95"><code>54b11e3</code></a> [Gradle] KotlinPluginLifecycle: Implement .toString for better diagnostics</li>
<li>Additional commits viewable in <a href="https://github.com/JetBrains/kotlin/compare/v1.8.22...v1.9.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/4965
Reviewed By: aigoncharov
Differential Revision: D47755886
Pulled By: passy
fbshipit-source-id: 6b253ac55c5177ef58702adb89ee4ebc2b4bea92
Summary:
The field changed from mStates to states breaking our reflection based code. Ideally I would like to just check if type == KStateContainer and access the field normally but the rest of the infrastructure expect to work on a java field.
Added tests to catch this sort of thing in the future. had to shift buck files around a bit to get it to work
Reviewed By: antonk52
Differential Revision: D46974357
fbshipit-source-id: 87a6f5883b33e4d1a7359df5987fc7ead7c19033
Summary: Build the jetpack compose plugin with gradle and export it to Maven.
Reviewed By: lblasa
Differential Revision: D46932689
fbshipit-source-id: cca0468bae7e6a324430aab548613aa1fdb61bf2
Summary: Move the jetpack plugin to a location that will get exported to GitHub. It won't get built as part of Gradle just yet.
Reviewed By: lblasa
Differential Revision: D46932691
fbshipit-source-id: 5837bbb2f31aad4221ee745fd145b91b2783d7fe
Summary:
[android] Remove deprecated kotlin plugin
See https://goo.gle/kotlin-android-extensions-deprecation.
We don't seem to be making use of the extension.
Pull Request resolved: https://github.com/facebook/flipper/pull/4749
Test Plan:
```
./gradlew :android:assembleDebug
```
CI
Task: T153938450
Reviewed By: antonk52
Differential Revision: D46066063
Pulled By: passy
fbshipit-source-id: 1ae58535ca408bf29c97d5a945013f968f5b47a2
Summary:
Added infra for collecting events from UI frameworks.
1. Framework event metadata captures all the static metadata around the event. This allows to us to not send the same metadata in every event as well as populate the monitoring drop down immediately. This is sent in init since this information is static
2. Framework event itself is quite bare at the moment. It will have thread and more attributes in the future
The UIdebugger litho support ulitity has been simplified now there are 3 extension points.
Context renamed to UIDContext since it is referenced in app initialisers where the android context is also imported and it create a naming collision
Reviewed By: lblasa
Differential Revision: D42606933
fbshipit-source-id: a419f3fd424c533d586813004c40b68feafd9a2e
Summary:
I created a separate folder under src called facedbook, which
1. isnt synced to github
2. isnt build by gradle
I also needed to exclude the file with the duplicate symbol from buck. I seemed to have to move both the src/facebook and src/main under one buck file to get the exclude to work
Reviewed By: lblasa
Differential Revision: D41612114
fbshipit-source-id: a8386e1b1eabdeca2a800d98d8732b2ca694836b
Summary:
This is temporary solution to get to parity with the old plugin. In future would like to make this more flexible on the desktop side
Additionally getData was renamed to getAttributes for consistency
Reviewed By: lblasa
Differential Revision: D41845248
fbshipit-source-id: 50e94a7712f5d42938229134e212cef5d379475d
Summary:
Although conceptually it made sense, it creates an issue with registration.
### Let me explain
Effectively, as an engineer, what constitutes static and dynamic metadata and how can I ensure that is treated as such?
It may be trivial to answer those questions but there was a fundamental assumption for static metadata that no longer holds true. Static metadata was registered when descriptors were first referenced, which most of the times happens when added to the descriptors registry.
This used worked fine until we introduced the concept of deferred attributes.
Deferred attributes, even though static, may register its metadata only when requested to.
The issue is even more fundamental as not all the objects that declare static metadata will be loaded into memory by the time the plugin is connected and sends this.
### Solution
To simplify, as the concept was never really used, there's only metadata.
There's only pending metadata which is metadata that is yet to be sent to Flipper Desktop.
Reviewed By: LukeDefeo
Differential Revision: D41614186
fbshipit-source-id: 85d62eeff81ff22ae6e969d7b5aed8628b336258
Summary: Global Id is stable as the component is rerendered. It is not stable if the whole component tree updates so we might want to deal with this in the future
Reviewed By: lblasa
Differential Revision: D41581346
fbshipit-source-id: 0c2834ba452ddcfc3e0a7392672825fc040901d9
Summary:
Attributes Inspector didn't have support for inspectable arrays.
This change addresses an issue with the inspectable itself and adds basic support to it in the visualiser.
Reviewed By: LukeDefeo
Differential Revision: D41522879
fbshipit-source-id: f9cad42470541039c8157477b0fe9bc58f18f1ba
Summary: Due to litho component instances being immutable we are able to process them later if we hold on to the instance. We have added a Maybe deferred type which sort of resembles a Monad. It wraps a value which may or may not be calculated later.
Reviewed By: lblasa
Differential Revision: D41474251
fbshipit-source-id: 2ba6e688518dba55cf4aa5ba53f390a92cf0921f
Summary:
Enumeration used to be a type containing a single property value of type string.
The InspectableEnum is a type that had an Enumeration value and possible values.
As we removed possible values from the enum value, this structure no longer serves its purpose.
Reviewed By: antonk52
Differential Revision: D41400874
fbshipit-source-id: e5c2d1e15ee9b3074ddd69f75ee9b8150d44379f
Summary:
Litho margins/padding/borders have the following attributes:
- left, top, right, bottom
- horizontal, vertical
- all
- start, end
This change processes these attributes and creates a SpaceBox inspectable which enables the margin visualiser in Flipper Desktop.
Reviewed By: LukeDefeo
Differential Revision: D41375299
fbshipit-source-id: be8bac1819f2b17c2fd1b1b86678aa0559278609
Summary:
Before this change, possible values for an enumeration were embedded within the attribute value itself.
After this change, possible values are located within the attribute metadata.
Reviewed By: LukeDefeo
Differential Revision: D41337003
fbshipit-source-id: cef5654a679e9b961e82993abb201b518fcbcd00
Summary:
There were 2 situations where the UI hadn't changed but we were sending a nodes with a different Id accross traversals which confuses things on the desktop
1. By removing the litho observer we are repeatidly scanning the entire hierachy on scroll or when a video plays. The debug component that represents litho views are not stable, they are generated each time even if the underlying component is the same
2. Offset child is generated by us each time and the old id refered to the generated offset child not the underlying object
This diff addresses these 2 cases by allowing a descriptor to choose the ID.
The nodeId convience method was used in a lot of places. For the places where the id ended up in the protocol we have migrated to the descriptors getID. In some other places it is only used internally or for logging. In this case I have renamed the method and changed the return type from Id to int so it cant be accidently used in the protocol
Reviewed By: lblasa
Differential Revision: D41307239
fbshipit-source-id: 655b230180a6d02d66888e86b2293eead3385455
Summary:
There seem to be a number of issues with registering to all changes properly for litho observer.
Removing it and allowing the decor view to do a full traversal fixes a number of problems. The performance with hardware rendering seems to be fine. This should be stopgap untill we tackle time travel properly
Reviewed By: lblasa
Differential Revision: D41304501
fbshipit-source-id: 5b7cdbd0dac04ba0dbf8dd5e449c99f0db4d0863
Summary: This makes life on the desktop easier as 99% of the time bounds were there but we were dealing with non sensical non null branches.
Reviewed By: lblasa
Differential Revision: D41218325
fbshipit-source-id: e490d3775720c1c55dcb8f4a2a85520294f5e2a9
Summary:
This diff adds support for layout and component props from Litho.
Notes:
- Each component could register a descriptor for itself.
Reviewed By: LukeDefeo
Differential Revision: D40680095
fbshipit-source-id: 57c78a199db58e05dd6dac4ed32ff6a869a73b0a
Summary:
Our descriptors currently have a method to return the name as it will be displayed on the elements hierarchy.
However, it doesn't provide enough context if the name is to be used to discover the type in our code base.
This change adds a qualified name method that can provide a more complete name which can indeed be used by the Open In IDE functionality, for example.
Reviewed By: passy
Differential Revision: D40936785
fbshipit-source-id: 790ae02b9ebf37501765c52a24307fcaaaf9c14d
Summary:
Before this change, attributes and attribute metadata were intermingled and sent as one unit via subtree update event.
This represented a few issues:
- Repetitiveness. For each declared and dynamic attribute, metadata was included on each value unit.
- Metadata can vary in size and thus can have a negative impact on payload size.
- The attribute name which is part of metadata is a string which always overhead on processing.
- Metadata instantiation is not cheap thus this also incurs in processing overhead i.e. even instantiating a single string can have an impact.
The proposal is to separate metadata of attributes from the actual node reported attributes. This solves the problems mentioned above.
Reviewed By: LukeDefeo
Differential Revision: D40674156
fbshipit-source-id: 0788551849fbce53065f819ba503e7e4afc03cc0
Summary:
There are some situatuins where a litho view can move without a mount occuring in that view. One situation is a litho view in a recycler view. If a neighbouring view is deleted or changes its width/height this will shift the whole recycler view. Since each view in the recycler view is typically a separate comonent tree. The children of the recycler view are not aware of their siblings changes through mount. And these situations do not count as a scroll which was the previous method of detecting change.
This is a work around to listen to on draw which seems to be fired in all situations.
Reviewed By: lblasa
Differential Revision: D40430777
fbshipit-source-id: a9c8196f31a6bdfd4a2fed398cfcaed190972959
Summary:
Initial implementation of Litho extensions using mount extension. After mount is called on the main thread and we traverse the hierachy. In future we can use mount extensions to construct a sparse tree rather than sending everything every time.
Scroll is handled with a native UI scroll listener for each litho view. This may break if the litho view is not a direct child of the scroll view.
Reviewed By: mihaelao
Differential Revision: D40021840
fbshipit-source-id: b09086a7a16660225885620609009dddf5b90d3b
Summary: Getting the boxes to line up is quite hard to do right and has undetermined value
Reviewed By: mihaelao
Differential Revision: D40430776
fbshipit-source-id: 6093c4874f39ecf0c673407da2bd03ef06ca017e
Summary:
This change adds support for more inspectables and also introduces more complex types to be used as a value.
This become specially useful for more complex yet primitive types like coordinate, size, bounds, etc.
Reviewed By: LukeDefeo
Differential Revision: D40307885
fbshipit-source-id: 125e832f06d6b31f56eb5405182d1c0d61388930
Summary: Moved to separate directory. These additional descriptors are useful for debugging the implementation but might not be useful for the end users so could potentially be removed down the road
Reviewed By: lblasa
Differential Revision: D40021834
fbshipit-source-id: f88c1186dd65cdabc816d5cd8256bb81c404a80c
Summary: There are other situations where we want to overide the offset than for litho mounted views
Reviewed By: lblasa
Differential Revision: D40021833
fbshipit-source-id: 1411a4a67e88f6893bb38e36fb6a81eead3edd1a
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/4177
^
In an attempt to fix Github actions, may or may not work.
Reviewed By: aigoncharov
Differential Revision: D40074397
fbshipit-source-id: e88039c56876ca21657db4a6d872c46294a4f8c3
Summary:
DecorView owns a BitmapPool to take snapshots of the view. These snapshots are later on serialised by the manager.
There's a couple of unrelated changes in this diff but that were already in place making it hard to split.
(1) Renamed 'traverseAndSend' to 'processUpdate'. Why?
The observers as a whole shouldn't necessary know that their 'observation' is being sent to any place. Future changes should move the send logic altogether from the observer too. But that can be made within the scope of a different diff.
(2) There was a bug for nodes that were being observed but then unsubscribed from. If the nodes were being marked for observation and observer was already into place, these were not being told to subscribe again for changes.
Reviewed By: LukeDefeo
Differential Revision: D39812943
fbshipit-source-id: af98c5caf54e1c69f97043bae95049395a2e4545
Summary:
This change introduces a new Descriptor method to obtain snapshots of an item in the layout hierarchy.
Only implemented by the ViewDescritor but it can be potentially extended to Windows, Fragments, Activities, ...
Reviewed By: LukeDefeo
Differential Revision: D39690548
fbshipit-source-id: cf3a1ccd63eb28c1de328310e8635829a40964dd
Summary: It was always the system hash code and in many places it was inconvient to get the descriptor to just end up calling the same function
Reviewed By: lblasa
Differential Revision: D39700215
fbshipit-source-id: b1439d56cd8f39ba8735f933662ad79b87ffbdbe
Summary: We had an issue where the offset for a native view was effectively caclculated twice and summed, once by litho and once by android. Given the UI debugger expects a nodes bounds to be w.r.t its parent the android systems x,y offset is 'wrong' from ui debuggers perspective, we set it to 0,0 and rely on the calculated offsets by the litho component hierachy
Reviewed By: lblasa
Differential Revision: D39695663
fbshipit-source-id: d9c2be950fc68bc2286359a62746356e89299cfd
Summary: This is to support a future diff where we will draw a basic wireframe for debugging
Reviewed By: lblasa
Differential Revision: D39509407
fbshipit-source-id: d99fd6fe39404996a0ed944c10905331262fd0c6
Summary:
^
After this change lands, it is safe to remove most of the Stetho fragment support types.
Reviewed By: LukeDefeo
Differential Revision: D39460121
fbshipit-source-id: 0e7d4ce71e828ee7bc9c6e945b8fe27dbd6f08f8
Summary:
1. The base class descriptor was removed, this was given that we have chained descriptor there is no need for this anymore
2. The Base interface node descriptor no longer has a mutable list based api. You simply return a list. The mutable list based api was specifically to allow chaining and this quirk is isoltated to the chained descriptor
3. AbstractChainedDescriptor and ChainedDescriptor were merged
Reviewed By: lblasa
Differential Revision: D39496073
fbshipit-source-id: fb3ec629ec3b27f587bdbd0b323624a4bc4ebea3
Summary: Each observer was doing a similar job of traversing, and setting up child observers and its easy to not clean up child observers in some cases. This provides a helper utility for the common use case
Reviewed By: lblasa
Differential Revision: D39466930
fbshipit-source-id: e74ae5c3709297b73c020cd148a0485ac9fc0f8f
Summary: Added an initial litho Tree observer and descriptors, its quiet naive and will be improved in a future diff
Reviewed By: lblasa
Differential Revision: D39466931
fbshipit-source-id: 66a462882af2e585b9719ee2f61595449f99c5e5