Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6eb21601 authored by Vaibhav Devmurari's avatar Vaibhav Devmurari
Browse files

Add dump for Input filter rust components

Test: None
Bug: 245989146
Flag: EXEMPT bugfix
Change-Id: I214e6c1e017a720fa38c55b7dd83a653db71381f
parent 53a8ef05
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -146,6 +146,12 @@ void InputFilter::notifyConfigurationChangedLocked() {

void InputFilter::dump(std::string& dump) {
    dump += "InputFilter:\n";
    if (isFilterEnabled()) {
        std::string result;
        LOG_ALWAYS_FATAL_IF(!mInputFilterRust->dumpFilter(&result).isOk());
        dump += result;
        dump += "\n";
    }
}

} // namespace android
+4 −0
Original line number Diff line number Diff line
@@ -250,6 +250,10 @@ void InputManager::dump(std::string& dump) {
        mCollector->dump(dump);
        dump += '\n';
    }
    if (ENABLE_INPUT_FILTER_RUST) {
        mInputFilter->dump(dump);
        dump += '\n';
    }
    mDispatcher->dump(dump);
    dump += '\n';
}
+2 −0
Original line number Diff line number Diff line
@@ -54,5 +54,7 @@ interface IInputFilter {

    /** Notifies when configuration changes */
    void notifyConfigurationChanged(in InputFilterConfiguration config);

    String dumpFilter();
}
+9 −0
Original line number Diff line number Diff line
@@ -130,6 +130,15 @@ impl Filter for BounceKeysFilter {
    fn destroy(&mut self) {
        self.next.destroy();
    }

    fn dump(&mut self, dump_str: String) -> String {
        let mut result = "Bounce Keys filter: \n".to_string();
        result += &format!("\tthreshold = {:?}ns\n", self.bounce_key_threshold_ns);
        result += &format!("\tkey_event_map = {:?}\n", self.key_event_map);
        result += &format!("\tblocked_events = {:?}\n", self.blocked_events);
        result += &format!("\tsupported_devices = {:?}\n", self.supported_devices);
        self.next.dump(dump_str + &result)
    }
}

#[cfg(test)]
+24 −2
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ pub trait Filter {
    fn notify_key(&mut self, event: &KeyEvent);
    fn notify_devices_changed(&mut self, device_infos: &[DeviceInfo]);
    fn destroy(&mut self);
    fn dump(&mut self, dump_str: String) -> String;
}

struct InputFilterState {
@@ -122,18 +123,30 @@ impl IInputFilter for InputFilter {
                    self.input_filter_thread.clone(),
                ));
                state.enabled = true;
                info!("Slow keys filter is installed");
                info!(
                    "Slow keys filter is installed, threshold = {:?}ns",
                    config.slowKeysThresholdNs
                );
            }
            if config.bounceKeysThresholdNs > 0 {
                first_filter =
                    Box::new(BounceKeysFilter::new(first_filter, config.bounceKeysThresholdNs));
                state.enabled = true;
                info!("Bounce keys filter is installed");
                info!(
                    "Bounce keys filter is installed, threshold = {:?}ns",
                    config.bounceKeysThresholdNs
                );
            }
            state.first_filter = first_filter;
        }
        Result::Ok(())
    }

    fn dumpFilter(&self) -> binder::Result<String> {
        let first_filter = &mut self.state.lock().unwrap().first_filter;
        let dump_str = first_filter.dump(String::new());
        Result::Ok(dump_str)
    }
}

struct BaseFilter {
@@ -161,6 +174,11 @@ impl Filter for BaseFilter {
    fn destroy(&mut self) {
        // do nothing
    }

    fn dump(&mut self, dump_str: String) -> String {
        // do nothing
        dump_str
    }
}

/// This struct wraps around IInputFilterCallbacks restricting access to only
@@ -397,6 +415,10 @@ pub mod test_filter {
        fn destroy(&mut self) {
            self.inner().is_destroy_called = true;
        }
        fn dump(&mut self, dump_str: String) -> String {
            // do nothing
            dump_str
        }
    }
}

Loading