Summary: Native can return nullptr, so this should be annotated.
Reviewed By: jknoxville
Differential Revision: D15146700
fbshipit-source-id: 332e3a074d2e39cfff677f3d84e94f910563f992
Summary: Makes the API a bit easier to use. Don't have to build an empty sidebar if you don't want one.
Reviewed By: passy
Differential Revision: D15064205
fbshipit-source-id: bd31c1aa97fd6d1c93717c10b268f49e44eb1299
Summary:
This diff makes headless flipper accept `metrics` argument. Once this is passed. The headless flipper will terminate to export the metrics of the plugins, the type of the export looks like the following.
```
export type MetricType = {[metricName: string]: number};
type MetricPluginType = {[pluginID: string]: MetricType};
export type ExportMetricType = {[clientID: string]: MetricPluginType};
```
This diff, uses the store to export the metrics. I will modify the logic to accept the data which gets exported through `exportData`
Reviewed By: passy
Differential Revision: D14933499
fbshipit-source-id: dade5b7bc59ea4beb6d16c5ef471737e8597358a
Summary:
Currently running the sample app on a pre-21 device produces a runtime error. This is because it includes OkHttp which requires 21+.
So this change just stops the sample app from being installable on pre-21 devices.
```
FATAL EXCEPTION: main
Process: com.facebook.flipper.sample, PID: 19629
java.lang.ExceptionInInitializerError
at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229)
at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1015)
at com.facebook.flipper.sample.FlipperSampleApplication.onCreate(FlipperSampleApplication.java:54)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4344)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19
at okhttp3.internal.platform.AndroidPlatform.buildIfSupported(AndroidPlatform.java:238)
at okhttp3.internal.platform.Platform.findPlatform(Platform.java:202)
at okhttp3.internal.platform.Platform.<clinit>(Platform.java:79)
... 16 more
```
Reviewed By: passy
Differential Revision: D14953859
fbshipit-source-id: 8289c19e837f1d3739e120dc5a0f53111b800ca0
Summary:
The crash logged from `ErrorReporterRunnable` wasn't detailed. For example look at the following video.
Also for some reason the `FlipperConnection` interface doesn't have an argument for crash name. Thus I changed the js side of the plugin to accept `crash.name` to be undefined.
{F155526537}
Reviewed By: passy
Differential Revision: D14852561
fbshipit-source-id: 6daf9847535b4508fa312b4f940b014911aae2e5
Summary: I'm adding these in the table plugin for now, since it's the only native plugin, but it probably makes sense to have this ability in all native plugins.
Reviewed By: passy
Differential Revision: D14833326
fbshipit-source-id: 906190745091e02daccb9f6e84b95e0e13f2d8bd
Summary: These are full width blocks, and can be put anywhere, so calling them SidebarSections isn't very helpful.
Reviewed By: danielbuechele
Differential Revision: D14833465
fbshipit-source-id: 2433337f78b6bbcb951cd90b6925de1b9a304d42
Summary:
The main change is is changing from the inheritance model:
`FlipperPlugin > NativePlugin > TablePlugin > ConcretePlugin`
to a composition model where:
`NativePlugin > TablePlugin > ConcretePlugin`
And behind the scenes, there's a `FlipperPlugin` that has a `NativePlugin` reference.
Now your native plugin will call methods like (in the table case) `display.updateRows` instead of `super.updateRows()`
The reasons for this are:
* Testability: we can easily mock the display and assert output.
* Encapsulation: Previously, native plugins could call `mConnection.send(...)` and send completely unsupported messages to the desktop. Now they only have access to the display's public api, which is guaranteed to work.
I've also changed it so that on every row update, we send the latest table metadata along with it. This makes sure we can ensure that the right table schema is displayed for the current data.
QueryResponder interface also added, which will come in useful for queryable datasets.
Reviewed By: passy
Differential Revision: D14751885
fbshipit-source-id: ea0bbd25f7eaa60020f8866fe210d8bd1c22e90b
Summary: Searches for all shared pref files instead of only the package name by default
Reviewed By: xiphirx
Differential Revision: D14763787
fbshipit-source-id: a3b7dfe8db078ac4f55e236b1516ed2de668f8d2
Summary:
Changes sidebar from just a bucket of json, to be a list of SidebarSections.
Currently implemented sections are Json, and Toolbar.
Reviewed By: passy
Differential Revision: D14620095
fbshipit-source-id: 6ba57f6f1ad954373c0bbb79570d779787e5d4db
Summary:
Adds abstract classes NativePlugin and TableNativePlugin.
Extend NativePlugin to implement a new NativePlugin type/template.
TableNativePlugin is an example of that. Extend TableNativePlugin to add a particular instance of a table plugin. See the stacked diff for an example of that (newsfeed inspector).
I think I'm going to change the NativePlugin implementation so it uses composition instead of inheriting from FlipperPlugin, so that the concrete subclasses don't get access to the FlipperPlugin primitive methods like onConnect etc. But I don't mind shipping this as is and changing it separately.
Reviewed By: passy
Differential Revision: D14505912
fbshipit-source-id: 0534147112aaf4c5a41d2d3e08de855767b2a010
Summary: Use responder rather than allowing exception to propagate.
Reviewed By: jknoxville
Differential Revision: D14538883
fbshipit-source-id: 2774a2adfcee356e1853fa3bf3c01aa113181262
Summary:
I'm not sure why this was made an AssertionError in the first place
as this cannot be caught by a catch branch that only takes Exception-subclasses.
Given that this is expected behaviour in some cases, using an Error here
is rather dangerous.
This does not fix the underlying issue of the attached task, but fixes
the undesired crashing behaviour of the app.
Reviewed By: priteshrnandgaonkar
Differential Revision: D14598611
fbshipit-source-id: b024b35f07e16755d9a4ab2f4a1f75b10d1353fb
Summary: Umm, not sure why this is still around. Looks like an `hg mv` gone wrong.
Reviewed By: jknoxville
Differential Revision: D14639300
fbshipit-source-id: 511116808c4e8ae684fc21454853a482a2c36122
Summary: This diff makes the params final.
Reviewed By: jknoxville
Differential Revision: D14641443
fbshipit-source-id: 5c003bd09144a8d8dd848c04599388ace4baef4d
Summary:
as title; refactored getStateData for components so we can reuse
Depends on D14386744
Reviewed By: passy
Differential Revision: D14386910
fbshipit-source-id: 088605b920fd5b489d007e5daa69f4cd53fc3072
Summary:
as title.
Refactored the getPropsData from DebugComponentDescriptor and extracted it to separate class so we can use it for SectionComponentDescriptor as well.
Will follow up with adding state info
Reviewed By: passy
Differential Revision: D14386744
fbshipit-source-id: c6b9887aa9d0c8d2333e7e64fa0954e56b505e51
Summary:
This is quite hacky, but allows us to test that a plugin connects, sends some actions and
then shuts down the app which we can use in a headless test.
Reviewed By: jknoxville
Differential Revision: D14482381
fbshipit-source-id: deafa8fa7e6d5a5ca1bb006e9d150b62295105af
Summary:
This can be used in integration tests/headless to create
some data to match against.
Ideally, headless also will need some mechanism to be
told to exit, but that's a separate issue.
Reviewed By: jknoxville
Differential Revision: D14387494
fbshipit-source-id: 88d7c27e342fb0b26251e6edf12e7b922d5144c0
Summary:
if we use WeakReferences, DebugSection nodes are released very fast and highlighting doesn't work because the node is removed from the ObjectTracker.
passy do you know who else I can add as reviewer?
Reviewed By: passy
Differential Revision: D14385872
fbshipit-source-id: ecc63190a84a7186296ed9c4c82ff6ab2aca8ad2
Summary: Enables Import and Export for all the nodes for android. Also search and Accessibility feature works
Reviewed By: danielbuechele
Differential Revision: D14406016
fbshipit-source-id: 8976db66d1ca91e98c52983a31ea584764bde0f6
Summary: Reference has been deprecated for a while. This diff completely removes it in favor of using ComparableDrawable everywhere.
Reviewed By: astreet
Differential Revision: D14241428
fbshipit-source-id: a986f34fda3a05c85d3d57b1e806c5e48c3f485e
Summary:
we only include in the inspector hierarchy the sections which are visible on screen. If as a result of a UI change the hierarchy of visible sections changes (for example when scrolling to a section that wasn't previously visible) this forces the section hierarchy to be recreated.
passy not sure if there's an easier way of making the children of a node invalidate, let me know if you have any suggestions
Depends on D14300298
Reviewed By: passy
Differential Revision: D14301404
fbshipit-source-id: 551e1910d0a80238027e32417aab8d42ed1c00b3
Summary:
as title, enables section name matching in the flipper search bar
Depends on D14300283
Reviewed By: passy
Differential Revision: D14300298
fbshipit-source-id: 33caefccf04b833c8606a083a13f3bffea6c419d
Summary:
these are not nullable. returning a non-null value
Depends on D14300226
Reviewed By: passy
Differential Revision: D14300283
fbshipit-source-id: bbc37161d2e01d94998cb287377742d8c5952bd1
Summary: If a plugin thows an exception pointer instead of by value, we should capture it and stop the app from crashing.
Reviewed By: passy
Differential Revision: D14243644
fbshipit-source-id: a2e5dde2b36c430355552e3305634baa5913b703
Summary: Only load the image when clicking on the "button"
Reviewed By: oprisnik
Differential Revision: D14165707
fbshipit-source-id: d07fb76562f8b91fc945713d779319b976e17016
Summary:
Not quite sure about the default as static, but then if it's for
debugging only, does it matter?
Reviewed By: oprisnik
Differential Revision: D14165668
fbshipit-source-id: edd53420a4fc8570de87f02b3e5e65cfe649f810
Summary:
This looks bad. There are two things I want to follow up on in future
diffs before landing this:
- Make loading the image conditional by adding another button.
- Add a default constructor to the plugin that avoids this crazy bit of boilerplate.
Reviewed By: oprisnik
Differential Revision: D14165569
fbshipit-source-id: 25c5fbaee32e72c6469979cda694cc9f13a92166
Summary:
Split off objecthelper into a (future) public and an fb-only version. This also open-sources the very first bit which is pretty useless on its own, but will already compile as its neatly stand-alone.
Note that this blocks releases until we have a stable version of Fresco to depend on.
Reviewed By: oprisnik
Differential Revision: D14149645
fbshipit-source-id: 0020d7ceccf89999695414ce389106ca6325ab7e
Summary: Instead of installing some global mutable thing, pass it down. This also eliminates the rather gnarly side-effect of instantiating some visitor and suddenly logging information in an entirely different place.
Reviewed By: oprisnik
Differential Revision: D14131253
fbshipit-source-id: 760c6a3f85056e334ac1149c76ca4126fbfa7da4
Summary:
Buck doesn't really care so the previous diff works out fine on
its own, but Android Studio is less forgiving.
Reviewed By: oprisnik
Differential Revision: D14131182
fbshipit-source-id: 0ad26e7c5f1e0776bdf07dda2f04bdf16183a5e8
Summary:
This is generic enough, even though I strongly dislike the
installing mechanism, but that can be changed later.
Reviewed By: oprisnik
Differential Revision: D14131183
fbshipit-source-id: b75c1e1563ac9371cbc7d28b239c316a0aa1a9dd
Summary:
Not sure why, but if we stick this in the build folder,
the artifacts get downloaded every single time despite `onlyIfNewer`.
Reviewed By: jknoxville
Differential Revision: D14132383
fbshipit-source-id: 464e4a6e474877c16a06a6e83ccd1a2e355cbea2
Summary:
Bit ugly, but allows us to use this interface in open-source
and internally. There's no buck target as we only need this
for Gradle.
Reviewed By: oprisnik
Differential Revision: D14132467
fbshipit-source-id: 998df6ce31f1fb7d00ea99d6d28759f7e2c800c3
Summary: Enables `FlipperArray`s to be constructed from `JSONObject`s or JSON `String`s, as `FlipperObject`s can be.
Reviewed By: jknoxville
Differential Revision: D13996135
fbshipit-source-id: d8a445d907799cd51dcdb3ba832dfe6fddb7171e