AM Debug v4.0.0-beta02 Run#2848
[Finder] Add support for logical expressions
Each filter option is assigned a unique ID consisting of its type and a number.
These unique IDs acts as operands or variables in the expression. The expression
supports the following operations in order:
- Brackets: Any operand or expression inside the first bracket will be evaluated
first. Brackets can also be nested.
- And: Logical "and" operation can be performed by separating multiple operands
by & (ampersand) symbol. This is the default behavior when no expression is
explicitly specified.
- Or: Logical "or" operation can be performed using the | (pipe) symbol.
All of above follows the standard Boolean algebraic laws for evaluation. Not
operator is not supported, because it already has implicit support in each
filter.
Example: Consider the following expression:
apk_size_1 & (app_type_2 | bloatware_3)
For each application item, app_type_2 filter will be matched first as it is the
first item inside the brackets. If it returns true (i.e., the filter matched),
it shall skip checking bloatware_3 filter due to short-circuit and collapse the
expression as stated below. If it returns false, it will evaluate bloatware_3
and collapse the expression.
apk_size_1 & true
In this simplified form, first apk_size_1 will be evaluated. If it returns true,
the second operand (i.e., true) will be evaluated and the expression will return
true. If it returns false, the second operand will not be evaluated and the
expression will return false.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
[Finder] Add support for logical expressions
Each filter option is assigned a unique ID consisting of its type and a number.
These unique IDs acts as operands or variables in the expression. The expression
supports the following operations in order:
- Brackets: Any operand or expression inside the first bracket will be evaluated
first. Brackets can also be nested.
- And: Logical "and" operation can be performed by separating multiple operands
by & (ampersand) symbol. This is the default behavior when no expression is
explicitly specified.
- Or: Logical "or" operation can be performed using the | (pipe) symbol.
All of above follows the standard Boolean algebraic laws for evaluation. Not
operator is not supported, because it already has implicit support in each
filter.
Example: Consider the following expression:
apk_size_1 & (app_type_2 | bloatware_3)
For each application item, app_type_2 filter will be matched first as it is the
first item inside the brackets. If it returns true (i.e., the filter matched),
it shall skip checking bloatware_3 filter due to short-circuit and collapse the
expression as stated below. If it returns false, it will evaluate bloatware_3
and collapse the expression.
apk_size_1 & true
In this simplified form, first apk_size_1 will be evaluated. If it returns true,
the second operand (i.e., true) will be evaluated and the expression will return
true. If it returns false, the second operand will not be evaluated and the
expression will return false.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
👍5❤2
AM Debug v4.0.0-beta02 Run#2849
Interceptor Fix focus issues
Android has a weird way of managing focuses and clicks. If an item is clickable,
it is not focusable by default. So, when the focus is on an input box and the
user clicks a button, the focus is not automatically cleared from the input box
if the button is not focusable, which is not an intended behavior as the UI will
jump to the focused input box right after the button is clicked. As there are
many input boxes, it is not feasible, at run-time, to determine where the focus
is currently on and clear it. As a workaround, it temporarily enables focusing
on the current view, focuses on it and then, clear the focus, thus, resetting
the focus.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
Interceptor Fix focus issues
Android has a weird way of managing focuses and clicks. If an item is clickable,
it is not focusable by default. So, when the focus is on an input box and the
user clicks a button, the focus is not automatically cleared from the input box
if the button is not focusable, which is not an intended behavior as the UI will
jump to the focused input box right after the button is clicked. As there are
many input boxes, it is not feasible, at run-time, to determine where the focus
is currently on and clear it. As a workaround, it temporarily enables focusing
on the current view, focuses on it and then, clear the focus, thus, resetting
the focus.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
❤2👍1😱1
AM Debug v4.0.0-beta02 Run#2850
Interceptor Fix displaying "Reset Intent" button on some cases
When flags, extras, or categories change, it didn't show the "Reset Intent"
button.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
Interceptor Fix displaying "Reset Intent" button on some cases
When flags, extras, or categories change, it didn't show the "Reset Intent"
button.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
❤2👍1
AM Debug v4.0.0-beta02 Run#2851
Interceptor Fix retrieving matching activities when default is set
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
Interceptor Fix retrieving matching activities when default is set
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
❤3👍2
AM Debug v4.0.0-beta02 Run#2852
VirusTotal Migrate to v3 API
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
VirusTotal Migrate to v3 API
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
❤2👍2🎉2
AM Debug v4.0.0-beta02 Run#2853
VirusTotal Allow uploading a single file with size up to 650 MB
Previously, the limit was 32 MB. Sizes are in MB, not MiB.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
VirusTotal Allow uploading a single file with size up to 650 MB
Previously, the limit was 32 MB. Sizes are in MB, not MiB.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
❤2👍2
AM Debug v4.0.0-beta02 Run#2854
Profile Replace individual extras with ProfileQueueItem
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
Profile Replace individual extras with ProfileQueueItem
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
❤3👍2
AM Debug v4.0.0-beta02 Run#2855
BatchOps Handle batch ops arguments in a more structural way
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
BatchOps Handle batch ops arguments in a more structural way
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
🤩2
App Manager | DEBUG
AM Debug v4.0.0-beta02 Run#2855 BatchOps Handle batch ops arguments in a more structural way Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
Although I have tried my best to review the changes (changes are massive), users are requested to try the batch ops to see if I made a mistake.
👍3❤2
AM Debug v4.0.0-beta02 Run#2856
Refactor Add IJsonSerializer for all QueueItem classes and any dependencies
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
Refactor Add IJsonSerializer for all QueueItem classes and any dependencies
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
❤3
AM Debug v4.0.0-beta02 Run#2857
Save install, batch, profile operation to history
A new item is added in the Labs page that can be used to view the history
entries. Each history entry remembers everything necessary to allow it to be re-
executed. However, any re-execution attempt may still fail for the following
reasons:
1. The history entry has certain apps requirements that are no longer installed.
2. The history entry may rely on external files that are no loner available or
accessible to App Manager.
3. The privilege has changed (e.g., previously it was executed with root but now
no-root).
4. The operating system no longer supports the functions.
5. App Manager no longer allows the operation.
The re-execution support will be added in a future revision.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
Save install, batch, profile operation to history
A new item is added in the Labs page that can be used to view the history
entries. Each history entry remembers everything necessary to allow it to be re-
executed. However, any re-execution attempt may still fail for the following
reasons:
1. The history entry has certain apps requirements that are no longer installed.
2. The history entry may rely on external files that are no loner available or
accessible to App Manager.
3. The privilege has changed (e.g., previously it was executed with root but now
no-root).
4. The operating system no longer supports the functions.
5. App Manager no longer allows the operation.
The re-execution support will be added in a future revision.
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
👍4❤3🔥1