Commit 8da9283
committed
ADFA-5176: Do not build the shared interceptor during Activity construction
HelpActivity and IDETooltipWebViewFragment forced
DocumentationRequestInterceptor.shared from a property initializer, so
the whole lazy ran during construction, before onCreate, on the main
thread. Two consequences.
Environment.DOC_DB is a plain static File with no initializer, assigned
only by Environment.init(). DeviceProtectedApplicationLoader wraps that
call in runCatching and the credential-protected loader returns before
it when storage is not ready, so null is a state the app can really be
in -- and the non-null parameter turned it into an NPE that killed the
activity before it existed. shared is nullable now and declines instead,
which puts the request back on the local web server: the same thing a
null from intercept() already means everywhere else.
The lazy also stats external storage for the nointercept sentinel. On
the main thread that is a disk read under a StrictMode policy built with
detectAll(), and on a contended FUSE mount it stalls the frame that
opens the screen. Touched from shouldInterceptRequest instead, on a
WebView thread, the way FAQActivity already did it.
Not covered here: intercept() still has no throw guard, so an Error
(an OOM decoding a large row) escapes onto a Chromium thread rather
than falling through to the server the way the class documents. That is
a separate finding from the same review.
Found in review of PR #1726.1 parent 3be53d3 commit 8da9283
4 files changed
Lines changed: 40 additions & 13 deletions
File tree
- app/src/main/java/com/itsaky/androidide
- activities/editor
- fragments
- common/src/main/java/com/itsaky/androidide
- activities/editor
- documentation
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | | - | |
| 74 | + | |
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| |||
Lines changed: 5 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
42 | 45 | | |
43 | 46 | | |
44 | 47 | | |
| |||
83 | 86 | | |
84 | 87 | | |
85 | 88 | | |
86 | | - | |
| 89 | + | |
87 | 90 | | |
88 | 91 | | |
89 | 92 | | |
| |||
Lines changed: 12 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
74 | 80 | | |
75 | 81 | | |
76 | 82 | | |
| |||
124 | 130 | | |
125 | 131 | | |
126 | 132 | | |
127 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
128 | 137 | | |
129 | 138 | | |
130 | 139 | | |
| |||
150 | 159 | | |
151 | 160 | | |
152 | 161 | | |
153 | | - | |
| 162 | + | |
154 | 163 | | |
155 | 164 | | |
156 | 165 | | |
| |||
Lines changed: 22 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
123 | 123 | | |
124 | 124 | | |
125 | 125 | | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
133 | 148 | | |
134 | 149 | | |
135 | 150 | | |
0 commit comments