From 02d55885c840ab5b19d15b4830d5811437d1ad02 Mon Sep 17 00:00:00 2001 From: Michal Mieczkowski Date: Mon, 1 Jul 2019 19:12:59 +0200 Subject: [PATCH] Handle get_clipboard_contents and set_clipboard_contents in libsimpleservo capi --- ports/libsimpleservo/capi/src/lib.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/ports/libsimpleservo/capi/src/lib.rs b/ports/libsimpleservo/capi/src/lib.rs index a8c646062870..a403edae3f50 100644 --- a/ports/libsimpleservo/capi/src/lib.rs +++ b/ports/libsimpleservo/capi/src/lib.rs @@ -351,10 +351,21 @@ impl HostTrait for HostCallbacks { } fn get_clipboard_contents(&self) -> Option { - unimplemented!() + debug!("get_clipboard_contents"); + let raw_contents = (self.0.get_clipboard_contents)(); + if raw_contents.is_null() { + return None; + } + let c_str = unsafe { CStr::from_ptr(raw_contents) }; + let contents_str = c_str.to_str().expect("Can't create str"); + Some(contents_str.to_owned()) } fn set_clipboard_contents(&self, contents: String) { - unimplemented!() + debug!("set_clipboard_contents"); + let contents = CString::new(contents).expect("Can't create string"); + let contents_ptr = contents.as_ptr(); + mem::forget(contents); + (self.0.set_clipboard_contents)(contents_ptr); } }