aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/clipboard_provider.rs
diff options
context:
space:
mode:
authorAvi Weinstock <aweinstock314@gmail.com>2015-04-22 13:25:05 -0400
committerAvi Weinstock <aweinstock314@gmail.com>2015-05-06 11:46:18 -0400
commitb742eeca050856b3055668c9021bacfb19b3de4a (patch)
tree231032915096b819248519d5885161d6d1867090 /components/script/clipboard_provider.rs
parent387836c42e2377fc53d51d3404e6b91d170727a8 (diff)
downloadservo-b742eeca050856b3055668c9021bacfb19b3de4a.tar.gz
servo-b742eeca050856b3055668c9021bacfb19b3de4a.zip
Made the clipboard-related functionality in TextInput more testable. Added test_clipboard_paste to the "test-unit" suite.
Diffstat (limited to 'components/script/clipboard_provider.rs')
-rw-r--r--components/script/clipboard_provider.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/components/script/clipboard_provider.rs b/components/script/clipboard_provider.rs
new file mode 100644
index 00000000000..060c857b64b
--- /dev/null
+++ b/components/script/clipboard_provider.rs
@@ -0,0 +1,48 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use msg::constellation_msg::ConstellationChan;
+use msg::constellation_msg::Msg as ConstellationMsg;
+
+use collections::borrow::ToOwned;
+use std::sync::mpsc::channel;
+
+pub trait ClipboardProvider {
+ // blocking method to get the clipboard contents
+ fn get_clipboard_contents(&mut self) -> String;
+ // blocking method to set the clipboard contents
+ fn set_clipboard_contents(&mut self, &str);
+}
+
+impl ClipboardProvider for ConstellationChan {
+ fn get_clipboard_contents(&mut self) -> String {
+ let (tx, rx) = channel();
+ self.0.send(ConstellationMsg::GetClipboardContents(tx)).unwrap();
+ rx.recv().unwrap()
+ }
+ fn set_clipboard_contents(&mut self, _: &str) {
+ panic!("not yet implemented");
+ }
+}
+
+pub struct DummyClipboardContext {
+ content: String
+}
+
+impl DummyClipboardContext {
+ pub fn new(s: &str) -> DummyClipboardContext {
+ DummyClipboardContext {
+ content: s.to_owned()
+ }
+ }
+}
+
+impl ClipboardProvider for DummyClipboardContext {
+ fn get_clipboard_contents(&mut self) -> String {
+ self.content.clone()
+ }
+ fn set_clipboard_contents(&mut self, s: &str) {
+ self.content = s.to_owned();
+ }
+}