Commit Graph

3080 Commits

Author SHA1 Message Date
Konstantin Shcheglov 8eed45d0b5 Issue 3084. Don't generated 'new' in Quick Assists.
This removes all 'new' is Quick Assists and their tests.

Also removes /*caret*/ and start/end markers from the test code that
is actually resolved, so that expectations should not have them as well.

R=brianwilkerson@google.com

Bug: https://github.com/flutter/flutter-intellij/issues/3084
Change-Id: Ib63ea165bdc14b22fa371f93765adb1ca65a6b56
Reviewed-on: https://dart-review.googlesource.com/c/89720
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-01-20 22:13:09 +00:00
Danny Tuppeny 16bcfbb104 Add deprecated_member_use_from_same_package to generated LSP ignores
Change-Id: I553dee00f08b8d84c4ba71ffb9dffbe1b262192c
Reviewed-on: https://dart-review.googlesource.com/c/90244
Auto-Submit: Danny Tuppeny <dantup@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-19 18:14:58 +00:00
Danny Tuppeny 17a439633d Add a custom LSP method dart/diagnosticServer to start server/return port
Change-Id: I9d9be244251099c947b2998f0a45ec29ef29ad83
Reviewed-on: https://dart-review.googlesource.com/c/90012
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-17 16:37:49 +00:00
Danny Tuppeny 7e05c2cd62 Add ability to generate custom classes for custom LSP methods
Change-Id: Ie613a828fd6d92133e3d5cb53673c37734fb6eec
Reviewed-on: https://dart-review.googlesource.com/c/90011
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-17 16:37:49 +00:00
Danny Tuppeny bfe15d87d8 Fix LSP exceptions serializing ResponseErrors with Uris
The ResponseError.data field was typed `dynamic` (as in the LSP spec) but this allows us to accidentally put non-serializable classes in it which will result in server errors when we try to send them back.

This change forces them to Strings and it's up to the code constructing the error to convert any additional data to a string first.

In order to catch this in tests, the mocks now force serialisation of all types flowing from the server to the client (this already happened for client to server).

Change-Id: I5d7f322e1a4296b1479468e36d81daebdbb4ab52
Reviewed-on: https://dart-review.googlesource.com/c/89511
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-16 16:57:43 +00:00
Danny Tuppeny 4b1b2f9176 Switch LSP formatter to not fetch resolved ASTs that aren't used
Change-Id: Id9ec4b9977a6e721085aae4b9f81645e41fc7893
Reviewed-on: https://dart-review.googlesource.com/c/89505
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-16 16:03:23 +00:00
Danny Tuppeny 5ce5d697da Implement LSP code folding
Change-Id: I2b076b1792c229cbbce610d7a195fa03eb29e6bd
Reviewed-on: https://dart-review.googlesource.com/c/89503
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-16 16:03:23 +00:00
Danny Tuppeny b47524d5b0 Ensure all unhandled exceptions are recorded on the server
Change-Id: Ib88236d1fed67a9c482be639d15fd7586375482c
Reviewed-on: https://dart-review.googlesource.com/c/89510
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-16 15:49:45 +00:00
lambdabaa ff06d233aa Set CompletionSuggestion.elementUri everywhere in analysis server that element is already being set.
This CL is a follow-up to https://dart-review.googlesource.com/c/sdk/+/88428
which added a new, optional elementUri to the CompletionSuggestion type
in analysis server protocol. Here, we're aiming to set the elementUri
whenever we have that information readily available.

R=brianwilkerson@google.com

Change-Id: I6dcf8a4029928432a80fc02ed97ee614eb75d986
Reviewed-on: https://dart-review.googlesource.com/c/89441
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Ari Aye <ariaye@google.com>
2019-01-15 17:34:22 +00:00
Danny Tuppeny ff5e5b6896 Regenerate LSP classes from spec + update README
The README was missing some methods (recent additions?) and also not quite in the same order - this fixes that. Also re-generates the classes based on current spec (mostly comments updates, but also non-nullability for `targetSelectionRange`.

Change-Id: I0dd4e24daf51b659783058362339550ec46fa1c8
Reviewed-on: https://dart-review.googlesource.com/c/89641
Commit-Queue: Danny Tuppeny <dantup@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Auto-Submit: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-15 16:51:19 +00:00
danrubel 23b5aee978 Update dartfix NNBD to handle more situations
This CL updates the dartfix NNBD implementation to skip types
in extends, implements, on, and with clauses
in addition to addressing comments in
https://dart-review.googlesource.com/c/sdk/+/89046

Change-Id: Ifa491ac3ffd2b2ef24b1e649c1355df65adefc13
Reviewed-on: https://dart-review.googlesource.com/c/89403
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-01-15 15:52:54 +00:00
Danny Tuppeny 04131e7fa0 Implement some more LSP rename tests
Change-Id: Idd0f3734b20f716d5e92f13c3a85f716c226fc5b

Typo

Change-Id: Ica50195f94f8c57be0e16edde75e6e287b45c06b
Reviewed-on: https://dart-review.googlesource.com/c/89365
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-15 08:58:13 +00:00
Danny Tuppeny 8cddcd20cd Handle deserialising sub-classes in the super-classes fromJson
Change-Id: Ib9048cf674ad77711401e77e20e6dd8bc7e28e00
Reviewed-on: https://dart-review.googlesource.com/c/89363
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-14 18:35:27 +00:00
Danny Tuppeny 28fe86d70f Add implementation/tests for LSP rename
Change-Id: I28e45cb7c979edb3d64b17e86ad0e03b7cd746cd
Reviewed-on: https://dart-review.googlesource.com/c/89361
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-14 18:12:47 +00:00
Danny Tuppeny f5c69070af Minor LSP refactors/tidy up
Change-Id: I7402d9493c58b1e020655a3b6332edbb5425fc22
Reviewed-on: https://dart-review.googlesource.com/c/89360
Commit-Queue: Danny Tuppeny <dantup@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Auto-Submit: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-14 17:30:45 +00:00
Danny Tuppeny 32eea54390 Extract rename element logic to allow sharing with LSP server
Change-Id: I3569af7e960c294078ffa5e026ad2e1c2371c6e3
Reviewed-on: https://dart-review.googlesource.com/c/89281
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-14 15:05:13 +00:00
Danny Tuppeny 4f160558b3 Extract inline interfaces from results definitions in LSP spec
Change-Id: I8661c7af628f0e3125db0613149bbcbc9f27bbe6
Reviewed-on: https://dart-review.googlesource.com/c/89301
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-14 15:04:13 +00:00
Greg Littlefield 085f31ac5f Library import quick-fix: support calls to top-level function variables
Fixes https://github.com/dart-lang/sdk/issues/34374

Change-Id: I6878d443afa2c70e3833fe4ed2118b28878b3210
Reviewed-on: https://dart-review.googlesource.com/c/89171
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-14 14:54:11 +00:00
Brian Wilkerson 47e988b781 Clean up the remaining copyright notices in analysis_server
Change-Id: Iee3110f92ab0f24312ddd1eff407d2229f895321
Reviewed-on: https://dart-review.googlesource.com/c/89101
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-01-11 15:38:56 +00:00
danrubel 3f90e88288 first cut adding simple non-nullable migration to dartfix
... and address comments in https://dart-review.googlesource.com/c/sdk/+/88640

Change-Id: I26e0f70f7c112d9ac184e10475e519afd8118a1d
Reviewed-on: https://dart-review.googlesource.com/c/89046
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2019-01-11 01:59:59 +00:00
Konstantin Shcheglov bb025bfac4 Use target file in CREATE_CONSTRUCTOR fixes.
Accidentally triggered an exception while.

R=brianwilkerson@google.com

Change-Id: I0c411378ce49388e0c2db197a408a4a43d8814b9
Reviewed-on: https://dart-review.googlesource.com/c/89040
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-01-10 19:02:06 +00:00
Danny Tuppeny 5966565f0e Re-sort file and move TODO to where it was originally
Change-Id: I13e3acf808f6174c920d725bd4c4709a0d0352b8

Move TODO back correct code

Change-Id: If2a137e318062c4b1ff6620ed49184d3cdbc5886
Reviewed-on: https://dart-review.googlesource.com/c/88969
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-10 17:48:54 +00:00
Danny Tuppeny c76fa45178 Add an analysis server diagnostics page for LSP capabilities and completions
Change-Id: I97fff735dddf24da4da4769309198f82fba66578
Reviewed-on: https://dart-review.googlesource.com/c/88964
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-10 15:15:40 +00:00
Danny Tuppeny 4a80990758 Implement LSP textDocument/documentHighlight
Change-Id: Iaa63791192e274a7ef8f2f4095e2984b27d95e05
Reviewed-on: https://dart-review.googlesource.com/c/88962
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-10 15:02:11 +00:00
Danny Tuppeny 44449e29d2 Add a custom toJson snippet for LSP ResponseMessage for null handling
This adds some custom code for serialising ResponseMessage to ensure that only one of result or error are ever specified, as required by JSON RPC.

Change-Id: I2736b83755553a906264b1e5251d1a535dc289fb
Reviewed-on: https://dart-review.googlesource.com/c/88953
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-10 14:46:30 +00:00
Danny Tuppeny 7e0d65706f Include null in allowed types for any and prefer null to omitting values if allowed
Without this, some requests that don't return values (like shutdown) would omit the `result` field from the response and this wasn't strictly correct (and caused an issue in testing with the VIM plugin).

Change-Id: Id961135d326b997aea69e29d9d2a4a2c310fa60c
Reviewed-on: https://dart-review.googlesource.com/c/88839
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-10 14:46:30 +00:00
Brian Wilkerson aeb7fccd5b Fix plugin start up to work with OverlayResourceProvider
Change-Id: I9444f6787b9a549f112b997a6173abf12e6b110a
Reviewed-on: https://dart-review.googlesource.com/c/88860
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-01-09 20:10:31 +00:00
Danny Tuppeny 36b5fe0c7a Track how many analysis server requests had latency info
This makes the latency numbers more accurate if they're not available for all requests and also doesn't show them if no requests had latency info (rather than showing average of 0ms).

Change-Id: I6db5543a782025a8133077b33f1228cce952b387
Reviewed-on: https://dart-review.googlesource.com/c/88802
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-09 17:41:49 +00:00
Danny Tuppeny bf13ac85c4 Ensure LSP server clears diagnostics for removed files/analysis roots
Change-Id: I5eaa4141da499c5193253440e6913a0eb92ed533
Reviewed-on: https://dart-review.googlesource.com/c/88836
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-09 16:17:12 +00:00
Danny Tuppeny 54fffe4cca Add support for LSP workspace/didChangeWorkspaceFolders
Change-Id: I55401d0abf65979fcd446b2ba1e8d9b6c09a42fc
Reviewed-on: https://dart-review.googlesource.com/c/88831
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-09 16:04:12 +00:00
Danny Tuppeny e7b783ba5d Fix bug with deprecated rootPath + add tests
Change-Id: I53d0a9b9a367839cc4ecf463017463f343947dfc
Reviewed-on: https://dart-review.googlesource.com/c/88826
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-09 16:04:12 +00:00
Danny Tuppeny ad300b904d Improve handling of server-specific analysis diagnostics pages
Change-Id: I0c133860d438ee848203a537eceb520595532a2c
Reviewed-on: https://dart-review.googlesource.com/c/88804
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-09 16:04:12 +00:00
Danny Tuppeny 1d096d8499 Enable the analyzer Diagnostics server for LSP
Change-Id: I3a555c301e8c09b1d8af8f952f9f65102961d3b7
Reviewed-on: https://dart-review.googlesource.com/c/88801
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-09 16:04:12 +00:00
lambdabaa b767744cfc Add optional elementUri field to CompletionSuggestion types in analysis server protocol
This will enable clients such as IntelliJ to display the package which code
completions are being offered from in addition to the keyword or identifier
that they're already getting from analysis server.

R=brianwilkerson@google.com

Change-Id: I30311451ad56b4eddbe73da20641ee0d14849293
Reviewed-on: https://dart-review.googlesource.com/c/88744
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Ari Aye <ariaye@google.com>
2019-01-09 00:13:39 +00:00
Danny Tuppeny f54ac41ce1 Ensure LSP server advertises it has QuickFixes
Also ensure we only return a bool for code action capabilities if the client doesn't support code action literals.

Change-Id: I277fc406ecdee6b0ee1c284f283cd3cb64fb5bdb
Reviewed-on: https://dart-review.googlesource.com/c/88721
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-08 17:22:21 +00:00
Danny Tuppeny 1ec1a8b46e Update LSP status doc
Change-Id: I8143fb3adae5917cda8ed03088c1187f487c15a7
Reviewed-on: https://dart-review.googlesource.com/c/88720
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2019-01-08 15:26:05 +00:00
lambdabaa 5f25d1546c Guard analysis server against missing .instrumentation directory location on disk
Currently if analysis server fails to resolve this directory, it will
crash the entire process with

NoSuchMethodError: The method 'getChild' was called on null.

_readUuid() was already failing over to generating a new random
identifier if it was either unable to find a uuid.txt file or
create one, so this change just triggers that behavior additionally
in the case that the parent directory is missing.

R=brianwilkerson@google.com

Change-Id: Ieafde2df5afd7e30a3830f241af02bf305c911ec
Reviewed-on: https://dart-review.googlesource.com/c/88428
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Ari Aye <ariaye@google.com>
2019-01-07 17:31:06 +00:00
Konstantin Shcheglov f259cc674f Don't split const/final variable declarations. Add explicit type.
R=brianwilkerson@google.com, keertip@google.com

Change-Id: I418a5e541194f2c94927f23b3468a6a876e05a1b
Reviewed-on: https://dart-review.googlesource.com/c/88438
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-01-06 18:53:29 +00:00
Danny Tuppeny c32737cc4c Add open files to LSP server/drivers priorityFiles
Change-Id: Ida44f8edb23b5c4080cfd6ba44ee6b4764d9b131
Reviewed-on: https://dart-review.googlesource.com/c/88325
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-03 16:00:28 +00:00
Brian Wilkerson 7eae70112c Handle InconsistentAnalysisException when attempting to generate completion suggestions (issue 35169)
Change-Id: Ifaab2478c53f207f0d22d5f2acaa8ab783d0b05c
Reviewed-on: https://dart-review.googlesource.com/c/88222
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-01-02 20:35:48 +00:00
Brian Wilkerson b84bfcce80 Remove some dead code from the analysis_server lsp support
Change-Id: I14478048d665204ce48ff8268fc3e47929867eb4
Reviewed-on: https://dart-review.googlesource.com/c/88166
Reviewed-by: Danny Tuppeny <dantup@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-01-02 14:30:44 +00:00
Danny Tuppeny 64a4354a55 Improve handling of fatal errors in LSP
This adds a new type of error for when a client request to edit a document
is not valid because the document offsets don't match up. In this instance,
the client/server are out of sync and we shouldn't try to continue as we
may produce edits that ruin the users work. The server checks errors being
sent to the client and if it sees this type of error will switch to a state
that requests all messages, send a logMessage and then shut down after a few
seconds.

The LSP spec has been updated to suggest that clients automatically restart
servers if they quit unexpectedly (though advising not to do it forever in
the case of a crash at startup).

Change-Id: I7beafc87a082b971600135a4cc76eae53f5d9443
Reviewed-on: https://dart-review.googlesource.com/c/87841
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-01-02 09:07:21 +00:00
Brian Wilkerson 737209b85c Remove some unused hint codes
Change-Id: I1388355e7832dec17ed06da14262573ea4e60eef
Reviewed-on: https://dart-review.googlesource.com/c/88161
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2018-12-31 16:23:28 +00:00
Danny Tuppeny 44a492f351 Send errors to LSP clients that request unsupported encodings
Change-Id: I25e70e92d12cdf1f5d34033264e0f027217d7c10
Reviewed-on: https://dart-review.googlesource.com/c/87780
Commit-Queue: Danny Tuppeny <dantup@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2018-12-20 18:08:14 +00:00
Danny Tuppeny 2b766eef7e Don't try to access refactor result if it may be null due to being cancelled
checkForReset throws if the refactoring has been cancelled while we were `await`ing, however this line of code in between will crash if that's the case. Moving this check up appears to resolve the issue.

Fixes https://github.com/dart-lang/sdk/issues/33578.

Change-Id: Ia98daf87062a7084de8810b5fc3783bdf81d7064
Bug: https://github.com/dart-lang/sdk/issues/33578
Reviewed-on: https://dart-review.googlesource.com/c/87842
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-20 17:37:38 +00:00
Danny Tuppeny 7280ca87a0 LSP requests must always be responded to, even if optional
Change-Id: Ieb3314028436a566c5fe4c2786c6b9196a03e26a
Reviewed-on: https://dart-review.googlesource.com/c/87800
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-20 17:36:58 +00:00
Konstantin Shcheglov 37bf87b9bf Use ChangeBuilder, not DartChangeBuilder to update pubspec file.
DartChangeBuilder resolves the file being updated.
We don't want to do this for pubspec.yaml

R=brianwilkerson@google.com, devoncarew@google.com

Change-Id: I3ebca00f2dba9da30109ab5307dafa516d0be856
Reviewed-on: https://dart-review.googlesource.com/c/87606
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-12-18 21:24:35 +00:00
Konstantin Shcheglov 570205c2b8 Unwrap OverlayResourceProvider in createByteStore().
Otherwise we did not use persistent EvictingFileByteStore, and used
MemoryCachingByteStore, so no much smaller cache, and no sharing
between restarts. Ouch...

R=brianwilkerson@google.com

Change-Id: I88774cfe97e4a55be591105dbc5e337b7d992c3f
Reviewed-on: https://dart-review.googlesource.com/c/87522
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-12-18 15:06:42 +00:00
Danny Tuppeny c7e7cbddca Remove workaround for LSP spec issue
+ regen the file, which updated comments that were improved in the spec since the last time.

Change-Id: Ib46cabcbc6e22d778847891f309f9be5e354720c
Reviewed-on: https://dart-review.googlesource.com/c/87580
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-18 14:30:03 +00:00
Danny Tuppeny ecccc0d94e Fix some LSP TODOs, remove some redundant code, add comments
Change-Id: Ibd51b17919245f4215fa49a64fd008ba268ca174
Reviewed-on: https://dart-review.googlesource.com/c/87442
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
2018-12-18 07:33:35 +00:00