iceraven
fenix/125.3.0
fenix/125.0
fenix/124.0
fenix/124.1.0
fenix/124.2.0
fenix/123.1.0
fenix/123.0
fenix/122.1.0
fenix/122.0
fenix/121.1.0
fenix/121.0
fenix/120.0
fenix/120.1.0
fenix/119.0.2
fenix/119.1.0
fenix/119.1.1
fenix/119.0
fenix/118.2.0
fenix/118.1.1
fenix/118.1.0
fenix/118.0
fenix/117.1.0
fenix/117.0.1
fenix/117.0
fenix/116.3.0
fenix/116.2.0
fenix/116.0
fenix/115.2.0
fenix/114.1.0
fenix/114.0
fenix/113.1.0
fenix/113.0
fenix/112.2.0
fenix/112.1.0
fenix/112.0
fork
upstream-sync
fork-history
drag-tabs-2
drag-tabs
fix-addon-search
beta-sync
describe-install
hide-myths
issues/166-allow-fallback-location
issues/115-die-for-your-ram
issues/131-accept-version-name
issues/111-change-appid
issues/125-camera-permissions-stuck-off
issues/111-temp-icon
issues/111-fix-weasels
issues/111-rebrand-strings
issues/82-fix-tests
issues/74-fix-whats-new
master
patch-1
releases/v80.0.0
longTapDelay
releases/v79.0.0
releases/v79.1.0
fennec/production
fennec/beta
innovation-week
fennec/nightly
staging
nightly-build-test
0.0.1-alpha
0.1.0-beta.0
fennec/nightly/1
fennec/nightly/2
fennec/nightly/3
fennec/nightly/4
fennec/nightly/5
fennec/nightly/6
fennec/nightly/7
fennec/nightly/8
fennec/nightly/9
fork-0
fork-1
fork-10
fork-2
fork-3
fork-4
fork-5
fork-6
fork-7
fork-8
fork-9
iceraven-1.0.0
iceraven-1.1.0
iceraven-1.10.0
iceraven-1.11.0
iceraven-1.11.1
iceraven-1.12.0
iceraven-1.13.0
iceraven-1.14.0
iceraven-1.15.0
iceraven-1.16.0
iceraven-1.16.1
iceraven-1.17.0
iceraven-1.18.0
iceraven-1.18.1
iceraven-1.18.2
iceraven-1.18.3
iceraven-1.18.4
iceraven-1.19.0
iceraven-1.2.0
iceraven-1.2.1
iceraven-1.20.0
iceraven-1.21.0
iceraven-1.21.1
iceraven-1.21.2
iceraven-1.3.0
iceraven-1.4.0
iceraven-1.5.0
iceraven-1.6.0
iceraven-1.7.0
iceraven-1.7.1
iceraven-1.8.0
iceraven-1.9.0
iceraven-2.0.0
iceraven-2.0.1
iceraven-2.0.2
iceraven-2.0.3
iceraven-2.1.0
iceraven-2.10.0
iceraven-2.10.1
iceraven-2.10.2
iceraven-2.10.3
iceraven-2.10.4
iceraven-2.10.5
iceraven-2.10.6
iceraven-2.11.0
iceraven-2.11.1
iceraven-2.12.0
iceraven-2.12.1
iceraven-2.13.0
iceraven-2.13.1
iceraven-2.13.2
iceraven-2.13.3
iceraven-2.13.4
iceraven-2.14.0
iceraven-2.14.1
iceraven-2.14.2
iceraven-2.15.0
iceraven-2.15.1
iceraven-2.15.2
iceraven-2.16.0
iceraven-2.16.1
iceraven-2.17.0
iceraven-2.17.1
iceraven-2.17.2
iceraven-2.18.0
iceraven-2.18.1
iceraven-2.18.2
iceraven-2.18.3
iceraven-2.18.4
iceraven-2.2.0
iceraven-2.2.1
iceraven-2.3.0
iceraven-2.4.0
iceraven-2.4.1
iceraven-2.5.0
iceraven-2.5.1
iceraven-2.6.1
iceraven-2.7.0
iceraven-2.8.0
iceraven-2.8.1
iceraven-2.8.2
iceraven-2.8.3
iceraven-2.8.4
iceraven-2.8.5
iceraven-2.9.0
iceraven-2.9.1
iceraven-2.9.2
v0.1
v0.3.0-rc.0
v0.3.0-rc.1
v1.0.0
v1.0.0-rc.0
v1.0.0-rc.1
v1.0.0-rc.2
v1.0.1
v1.0.1-rc.1
v1.1.0
v1.1.0-rc.1
v1.1.0-rc.2
v1.2.0
v1.2.0-rc.1
v1.2.0-rc.2
v1.3.0
v1.3.0-rc.1
v1.3.0-rc.2
v1.3.0-rc.3
v1.3.1
v1.4.0
v1.4.0-rc.1
v1.4.1
v100.0.0-beta.1
v100.0.0-beta.2
v100.0.0-beta.3
v100.0.0-beta.4
v100.0.0-beta.5
v100.0.0-beta.6
v100.0.0-beta.7
v100.1.0
v100.1.1
v100.1.2
v100.1.3
v100.2.0
v100.3.0
v101.0.0-beta.1
v101.0.0-beta.2
v101.0.0-beta.3
v101.0.0-beta.4
v101.0.0-beta.5
v101.0.0-beta.6
v101.1.0
v101.1.1
v101.2.0
v102.0.0-beta.1
v102.0.0-beta.2
v102.0.0-beta.3
v102.0.0-beta.4
v102.0.0-beta.5
v102.1.0
v102.1.1
v102.2.0
v102.2.1
v103.0.0-beta.1
v103.0.0-beta.2
v103.0.0-beta.3
v103.0.0-beta.4
v103.0.0-beta.5
v103.1.0
v103.2.0
v104.0b1
v104.0b2
v104.0b3
v104.0b4
v104.0b5
v104.0b6
v104.0b7
v104.1.0
v104.2.0
v105.0b1
v105.0b2
v105.0b3
v105.0b4
v105.0b5
v105.0b6
v105.1.0
v105.2.0
v106.0b1
v106.0b2
v106.0b3
v106.0b4
v106.0b5
v106.1.0
v107.0b1
v107.0b2
v107.0b3
v107.0b4
v107.0b5
v107.0b6
v107.1.0
v107.2.0
v108.0b1
v108.0b2
v108.0b3
v108.0b4
v108.0b5
v108.0b6
v108.1.0
v108.1.1
v108.2.0
v109.0b1
v109.0b2
v109.0b3
v109.0b4
v109.0b5
v109.0b6
v109.1.1
v109.2.0
v110.0.1
v110.0b1
v110.0b2
v110.0b3
v110.0b4
v110.0b5
v110.0b6
v2.0.0
v2.0.0-rc.2
v2.0.0-rc.3
v2.1.0
v2.1.0-rc.1
v2.1.0-rc.2
v2.1.0-rc.3
v2.1.0-rc.4
v2.2.0
v2.2.0-rc.1
v2.2.0-rc.2
v2.3.0
v2.3.0-rc.1
v2.3.0-rc.2
v3.0.0
v3.0.0-beta.1
v3.0.0-beta.2
v3.0.0-beta.3
v3.0.1
v3.0.2
v3.1.0
v3.1.0-beta.1
v3.1.0-beta.2
v3.1.0-beta.3
v3.1.0-beta.4
v3.1.0-rc.1
v3.2.0
v3.2.0-beta.1
v3.2.0-beta.2
v3.2.0-beta.3
v3.2.1
v4.0.0
v4.0.0-beta.1
v4.0.0-beta.2
v4.0.0-beta.3
v4.0.0-beta.4
v4.0.0-beta.5
v4.1.0
v4.1.0-beta.1
v4.1.0-beta.2
v4.2.0
v4.2.0-beta.1
v4.2.0-beta.2
v4.2.0-beta.3
v4.2.1
v4.2.1-beta.1
v4.3.0
v4.3.0-beta.1
v4.3.0-beta.2
v5.0.0
v5.0.0-beta.1
v5.0.0-beta.2
v5.1.0
v5.1.0-beta.1
v5.1.0-beta.2
v5.1.0-beta.3
v5.1.1
v5.2.0
v5.2.0-beta.1
v5.2.0-beta.2
v74.0.0-beta.1
v74.0.0-beta.2
v74.0.0-beta.3
v75.0.0-beta.1
v75.0.0-beta.2
v75.0.0-beta.3
v75.0.0-beta.4
v75.0.0-beta.5
v75.0.0-beta.6
v76.0.0-beta.1
v76.0.0-beta.2
v77.0.0-beta.1
v77.0.0-beta.2
v78.0.0-beta.1
v78.0.1-beta.1
v79.0.0
v79.0.0-beta.1
v79.0.0-beta.2
v79.0.0-beta.3
v79.0.0-beta.4
v79.0.0-beta.5
v79.0.0-beta.6
v79.0.0-beta.7
v79.0.0-beta.8
v79.0.0-beta.9
v79.0.1
v79.0.2
v79.0.3
v79.0.4
v79.0.5
v79.1.0-beta.1
v80-alpha
v80.0.0-beta.1
v80.0.0-beta.2
v80.0.0-beta.3
v80.0.0-beta.4
v80.0.0-beta.5
v80.0.0-beta.6
v80.0.0-beta.7
v80.0.1
v80.0.1-beta.1
v80.0.1-beta.2
v80.1.0
v80.1.1
v80.1.2
v80.1.3
v81.1.0
v81.1.0-beta.1
v81.1.0-beta.2
v81.1.0-rc.1
v81.1.1
v81.1.1-beta.3
v81.1.1-beta.4
v81.1.1-beta.5
v81.1.2
v81.1.3
v81.1.4
v81.1.5
v82.0.0-beta.1
v82.0.0-beta.2
v82.0.0-beta.3
v82.0.0-beta.4
v82.0.0-beta.5
v82.0.0-beta.6
v82.1.0
v82.1.0-rc.1
v82.1.0-rc.2
v82.1.1
v82.1.2
v82.1.3
v83.0.0-beta.1
v83.0.0-beta.2
v83.0.0-beta.3
v83.0.0-beta.4
v83.1.0
v83.1.0-rc.1
v83.1.0-rc.2
v84.0.0-beta.1
v84.0.0-beta.2
v84.0.0-beta.3
v84.0.0-beta.4
v84.1.0
v84.1.0-rc.1
v84.1.1
v84.1.2
v84.1.3
v84.1.4
v85.0.0-beta.1
v85.0.0-beta.2
v85.0.0-beta.3
v85.0.0-beta.4
v85.0.0-beta.5
v85.0.0-beta.6
v85.0.0-beta.7
v85.0.0-beta.8
v85.0.0-beta.9
v85.1.0
v85.1.0-rc.1
v85.1.1
v85.1.2
v85.1.3
v86.0.0-beta.1
v86.0.0-beta.2
v86.0.0-beta.3
v86.0.0-beta.4
v86.0.0-beta.5
v86.1.0
v86.1.0-rc.1
v86.1.1
v87.0.0-beta.1
v87.0.0-beta.2
v87.0.0-beta.3
v87.0.0-beta.4
v87.0.0-beta.5
v87.0.0-beta.6
v87.0.0-rc.1
v88.0.0-beta.1
v88.0.0-beta.2
v88.0.0-beta.3
v88.0.0-beta.4
v88.0.0-beta.5
v88.0.0-beta.6
v88.1.0
v88.1.1
v88.1.2
v88.1.3
v88.1.4
v89.0.0-beta.1
v89.0.0-beta.10
v89.0.0-beta.2
v89.0.0-beta.3
v89.0.0-beta.4
v89.0.0-beta.5
v89.0.0-beta.6
v89.0.0-beta.7
v89.0.0-beta.8
v89.0.0-beta.9
v89.1.0
v89.1.1
v90.0.0-beta.1
v90.0.0-beta.2
v90.0.0-beta.3
v90.0.0-beta.4
v90.0.0-beta.5
v90.0.0-beta.6
v90.1.0
v90.1.1
v90.1.2
v90.1.3
v91.0.0-beta.1
v91.0.0-beta.2
v91.0.0-beta.3
v91.0.0-beta.4
v91.0.0-beta.5
v91.0.0-beta.6
v91.1.0
v91.2.0
v91.3.0
v91.3.1
v91.4.0
v92.0.0-beta.2
v92.0.0-beta.3
v92.0.0-beta.4
v92.0.0-beta.5
v92.0.0-beta.6
v92.0.0-beta.7
v92.0.0-beta.8
v92.1.0
v92.1.1
v93.0.0-beta.1
v93.0.0-beta.2
v93.0.0-beta.3
v93.0.0-beta.4
v93.1.0
v93.2.0
v94.0.0-beta.1
v94.0.0-beta.2
v94.0.0-beta.3
v94.0.0-beta.4
v94.0.0-beta.5
v94.1.0
v94.1.1
v94.1.2
v95.0.0-beta.1
v95.0.0-beta.2
v95.0.0-beta.3
v95.0.0-beta.4
v95.0.0-beta.5
v95.0.0-beta.6
v95.1.0
v95.2.0
v96.0.0-beta.1
v96.0.0-beta.2
v96.0.0-beta.3
v96.0.0-beta.4
v96.0.0-beta.5
v96.1.0
v96.1.1
v96.2.0
v96.3.0
v96.3.1
v97.0.0-beta.1
v97.0.0-beta.2
v97.0.0-beta.3
v97.0.0-beta.4
v97.0.0-beta.5
v97.0.0-beta.6
v97.1.0
v97.1.1
v97.2.0
v97.3.0
v98.0.0-beta.1
v98.0.0-beta.2
v98.0.0-beta.3
v98.0.0-beta.4
v98.1.0
v98.1.1
v98.2.0
v98.3.0
v99.0.0-beta.1
v99.0.0-beta.2
v99.0.0-beta.3
v99.0.0-beta.4
v99.0.0-beta.5
v99.1.0
v99.1.1
v99.2.0
${ noResults }
2 Commits (1da7a9fac7ef13ddf228b81927b3ef8e5270533b)
Author | SHA1 | Message | Date |
---|---|---|---|
MarcLeclair |
24bce64e0b
|
16373 Count the # of inflations done on startup (#16778)
* For #16373: Added performance Inflater to counter # of inflations This class is quite straight forward. The only thing that I have to point out is the onCreateView method. It usually calls its super if you don't override it. The problem with that is that the super.onCreateView actually uses android.view. as a prefix for the XML element it tries to inflate. So if we have an element that isn't part of that package, it'll crash. As I said in the code, a good example is ImageButton. Calling android.view.ImageButton will make the app crash. The method is implemented the same way that PhoneLayoutInflater does (Another example is the AsyncLayoutInflater) * For #16373: Added test for PerformanceInflater This test got quite awkward / complicated fast. I wanted to test the to make sure we don't break *any* of our layouts and to do so, I decided to just retrieve all our XML in our /res/layout folder. However, this gets quite a bit outside of a unit test scope. The point was to get every layouts and get their LayoutID through the resources using the testContext we have. It gets even weirder, since some of the XML tags have special implementation in android. One of them is the <fragment> tag. That tag actually is inflated by the OS using the Factory2 that the Activity.java implements. In order to get around the fragment issue, we just return a basic FrameLayout since the system LayoutInflater doesn't deal won't ever get a <fragment> tag to inflate. Another issue was the <merge> tag. In order to inflate those, you need 1) a root view and 2) attach your view to it. In order to be able to test those layouts file, I had to create an empty FrameLayout and use it as the root view for testing. Again, I know this is beyond the spirit of a unit test but if we use this inflater, I think it should make sure that no layouts are broken by it. * For #16373: Overrode getSystemService to return PerformanceInflater This allows PerformanceInflater to be called in every inflation to keep track of the number of inflations we do. * For #16373: Added UI test for # of inflations * For #16373: Lint fix * For #167373: Changed the LayoutInflater cloneInContext to take this instead of inflater The inflater parameter is set on the first call from the OS from the Window object. However, the activity itself sets multiple factories on the inflater during its creation (usually through AppCompatDelegateImpl.java). This means that, once we initially set the inflater with a null check, we pass an inflater that has no factory initially. However, since we keep a reference to it, when cloneInContext was called, it cloned the inflater with the original inflater which didn't have any factories set up. This meant that the app would crash on either browserFragment creation or any thing that required appCompat (such as ImageView and ImageButton). Now, passing itself with a cloneInContext means we keep all the factories initially set by the activity or the fragment. * For #16373: Fixed code issues for PR. No behavior change * For #16373: fixed some code nits |
3 years ago |
Michael Comella | 72ab058551 |
For #16376: move Startup*Test to perf pkg under code owners.
Instead of listing many different files here, we should just put them in /perf/ packages and code owner them. |
4 years ago |