pub struct TraceRule {
    pub trace_level: Option<i32>,
    pub match_all_packages: Vec<String>,
    pub match_any_packages: Vec<String>,
    pub match_secure: Option<bool>,
    pub match_ime_connection_active: Option<bool>,
}
Expand description

A rule that specifies the TraceLevel for an event based on matching conditions. All matchers in the rule are optional. To trigger this rule, an event must match all of its specified matchers (i.e. the matchers function like a series of conditions connected by a logical ‘AND’ operator). A rule with no specified matchers will match all events. Next ID: 6

Fields§

§trace_level: Option<i32>

The trace level to be used for events that trigger this rule. If unspecified, TRACE_LEVEL_NONE will be used by default.

§match_all_packages: Vec<String>

Package matchers

Respectively matches if all or any of the target apps for this event are contained in the specified list of package names.

Intended usage:

  • Use match_all_packages to selectively allow tracing for the listed packages.
  • Use match_any_packages to selectively deny tracing for certain packages.

WARNING: Great care must be taken when designing rules for field tracing! This is because each event is almost always sent to more than one app. For example, when allowing tracing for a package that has a spy window over the display (e.g. SystemUI) using match_any_packages, essentially all input will be recorded on that display. This is because the events will be sent to the spy as well as the foreground app, and regardless of what the foreground app is, the event will end up being traced. Alternatively, when attempting to block tracing for specific packages using match_all_packages, no events will likely be blocked. This is because the event will also be sent to other apps (such as, but not limited to, ones with spy windows), so the matcher will not match unless all other targets are also listed under the match_all_packages list.

§match_any_packages: Vec<String>§match_secure: Option<bool>

Matches if the event is secure, which means that at least one of the targets of this event is using the window flag FLAG_SECURE.

§match_ime_connection_active: Option<bool>

Matches if there was an active IME connection while this event was being processed.

Implementations§

Source§

impl TraceRule

Source

pub fn trace_level(&self) -> TraceLevel

Returns the enum value of trace_level, or the default if the field is unset or set to an invalid enum value.

Source

pub fn set_trace_level(&mut self, value: TraceLevel)

Sets trace_level to the provided enum value.

Source

pub fn match_secure(&self) -> bool

Returns the value of match_secure, or the default value if match_secure is unset.

Source

pub fn match_ime_connection_active(&self) -> bool

Returns the value of match_ime_connection_active, or the default value if match_ime_connection_active is unset.

Trait Implementations§

Source§

impl Clone for TraceRule

Source§

fn clone(&self) -> TraceRule

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TraceRule

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TraceRule

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Message for TraceRule

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for TraceRule

Source§

fn eq(&self, other: &TraceRule) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for TraceRule

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.