Bug 1079874 - Define device configuration in inflated resources. r=sebastian

See the added code comments for motivations.

Note that this is a speculative patch - I was unable to reproduce the crash and
thus do not know if it fixes it, however, I did test that the appropriate
toolbar configuration is created on vanilla Android for phone & tablet.

MozReview-Commit-ID: 2v1Ix8X68LH

--HG--
extra : rebase_source : ee32c374d9e2daf1a75975b657cb173dd1432fc3
This commit is contained in:
Michael Comella 2016-06-01 14:49:29 -07:00
parent f8fae386c0
commit d1c8268ecb
3 changed files with 31 additions and 1 deletions

View File

@ -162,8 +162,9 @@ public abstract class BrowserToolbar extends ThemedRelativeLayout
}
public static BrowserToolbar create(final Context context, final AttributeSet attrs) {
final boolean isLargeResource = context.getResources().getBoolean(R.bool.is_large_resource);
final BrowserToolbar toolbar;
if (HardwareUtils.isTablet()) {
if (isLargeResource) {
toolbar = new BrowserToolbarTablet(context, attrs);
} else {
toolbar = new BrowserToolbarPhone(context, attrs);

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ This Source Code Form is subject to the terms of the Mozilla Public
~ License, v. 2.0. If a copy of the MPL was not distributed with this
~ file, you can obtain one at http://mozilla.org/MPL/2.0/.
-->
<resources>
<!-- See definition in values/ for explanation. -->
<bool name="is_large_resource">true</bool>
</resources>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ This Source Code Form is subject to the terms of the Mozilla Public
~ License, v. 2.0. If a copy of the MPL was not distributed with this
~ file, you can obtain one at http://mozilla.org/MPL/2.0/.
-->
<resources>
<!-- Some devices use resources based on configuration (e.g. large, xlarge) that are inconsistent
with the configuration retrieved by HardwareUtils (e.g. some custom ROMs allow the user to
choose a phone or tablet version of the UI even though the hardware stays the same). This
can cause crashes when we branch on the value returned by HardwareUtils.
In order to work around this, we define the resource size in resources with the expectation that
we branch on that value, rather than HardwareUtils, so our code is consistent with the used resources.
See bug 1277379 for a initiative to move all of the HardwareUtils code over. -->
<bool name="is_large_resource">false</bool>
</resources>