Status Update
Comments
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #2
il...@google.com <il...@google.com> #3
If the width or height is greater than 8191, left-shifting causes the sign bit to be lost, turning a '1' into a '0', which results in an incorrect width or height.
I agree there's a bug here, but I'm not sure this is quite a precise description of the problem. A quick experiment suggests that the left shift (<<
) works fine (if we are just looking at bits), but the right shift (>>
) is where the problem is introduced, because >>
does "sign extension" in Java - meaning if input value is negative (the MSB of the 32-bit int is 1
), then the result will be negative too. This can be fixed by using the unsigned right shift operator (>>>
).
You can see this in jshell
:
$ jshell
| Welcome to JShell -- Version 22
| For an introduction type: /help intro
jshell> int width = 5
width ==> 5
jshell> int height = 8192
height ==> 8192
jshell> int widthAndHeight = (width << 16) | height
widthAndHeight ==> 335872
jshell> (widthAndHeight << 18) >> 18
$8 ==> -8192
jshell> (widthAndHeight << 18) >>> 18
$9 ==> 8192
That said, I also agree that your change in
Description
Version used: 1.0.0-beta01
Devices/Android versions reproduced on:
This is a feature request.
TL;DR: Please make exact URI matches the highest priority for deep link resolution.
Currently, the navigation library places higher priority on the deep link matches with the highest number of placeholders.
Example:
Given deep links:
* deep link 1: uri="hostname/page.html"
* deep link 2: uri="hostname/{username}"
The second deep link will match even when the uri is actually "hostname/page.html".
Ian Lake suggested (in ASG) that the following might be a further refinement of the deep link resolution algorithm: "exact matches > multiple placeholders > single placeholder > partial match". This would make it possible to resolve the URIs correctly in the above example.