Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: remoting/host/linux/x_server_clipboard.h

Issue 10909133: Implement clipboard for Chromoting Linux hosts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove timestamp processing, and address comments. Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Don't include this file from any .h files because it pulls in some X headers.
6
7 #ifndef REMOTING_HOST_LINUX_X_SERVER_CLIPBOARD_H_
8 #define REMOTING_HOST_LINUX_X_SERVER_CLIPBOARD_H_
9
10 #include <X11/Xatom.h>
11 #include <X11/Xlib.h>
12
13 #include <map>
14 #include <set>
15 #include <string>
16
17 #include "base/basictypes.h"
18 #include "base/callback_forward.h"
19 #include "base/timer.h"
20
21 namespace remoting {
22
23 // A class to allow manipulation of the X clipboard, using only X API calls.
24 class XServerClipboard {
25 public:
26 typedef base::Callback<void(const std::string& mime_type,
27 const std::string& data)>
28 ClipboardChangedCallback;
29
30 XServerClipboard();
31 ~XServerClipboard();
32
33 // The caller must ensure |display| is still valid whenever any other
34 // methods are called on this object.
Wez 2012/09/25 20:29:29 nit: Start this comment with an explanation of wha
Lambros 2012/09/25 22:42:39 Done.
35 void Init(Display* display, const ClipboardChangedCallback& callback);
36
37 // Copy data to the X Clipboard. This acquires ownership of the
38 // PRIMARY and CLIPBOARD selections.
39 void SetClipboard(const std::string& mime_type, const std::string& data);
40
41 // This method allows this object to be hooked up to the program's main event
42 // loop. It should be invoked by the caller for each X11 event. This class
Wez 2012/09/25 20:29:29 nit: Rephrase the comment to describe what this ca
Lambros 2012/09/25 22:42:39 Done.
43 // is not thread-safe, so all its methods must be called on the application's
44 // main event-processing thread.
Wez 2012/09/25 20:29:29 nit: Move the comment on the class' threading to t
Lambros 2012/09/25 22:42:39 Done.
45 void ProcessXEvent(XEvent* event);
46
47 private:
48 void OnSetSelectionOwnerNotify(Atom selection, Time timestamp);
49 void OnPropertyNotify(XEvent* event);
50 void OnSelectionNotify(XEvent* event);
51 void OnSelectionRequest(XEvent* event);
Wez 2012/09/25 20:29:29 Add a comment to this block of methods, e.g. "Hand
Lambros 2012/09/25 22:42:39 Done.
52
53 // Called when the selection owner has replied to a request for information
54 // about a selection.
55 void DoSelectionNotify(XSelectionEvent* event,
56 Atom type,
57 int format,
58 int item_count,
59 void* data);
60
61 bool HandleSelectionTargetsEvent(XSelectionEvent* event,
62 int format,
63 int item_count,
64 void* data);
65 bool HandleSelectionStringEvent(XSelectionEvent* event,
66 int format,
67 int item_count,
68 void* data);
Wez 2012/09/25 20:29:29 Add a comment before these methods indicating that
Lambros 2012/09/25 22:42:39 Done.
69
70 // Notify the registered callback of new clipboard text.
71 void NotifyClipboardText(const std::string& text);
72
73 bool IsSelectionOwner(Atom selection);
Wez 2012/09/25 20:29:29 nit: Move this near to AssertSelectionOwnership.
Lambros 2012/09/25 22:42:39 Done.
74 void RequestSelectionTimestamp(Atom selection, Time time);
Wez 2012/09/25 20:29:29 Add a comment before the Request* methods indicati
Wez 2012/09/25 20:29:29 nit: Remove RequestSelectionTimestamp?
Lambros 2012/09/25 22:42:39 Done.
Lambros 2012/09/25 22:42:39 Done.
75 void RequestSelectionTargets(Atom selection);
76 void RequestSelectionString(Atom selection, Atom target);
77
78 // Assert ownership of the specified |selection|.
79 void AssertSelectionOwnership(Atom selection);
80
81 Display* display_;
82 Window clipboard_window_;
83 bool have_xfixes_;
84 int xfixes_event_base_;
85 int xfixes_error_base_;
86 Atom clipboard_atom_;
87 Atom large_selection_atom_;
88 Atom selection_string_atom_;
89 Atom targets_atom_;
90 Atom timestamp_atom_;
91 Atom utf8_string_atom_;
92 std::set<Atom> selections_owned_;
93 std::map<Atom, Time> selection_own_time_;
94 std::string data_;
95 Atom large_selection_property_;
96 base::TimeTicks get_selections_time_;
97 ClipboardChangedCallback callback_;
98
99 DISALLOW_COPY_AND_ASSIGN(XServerClipboard);
100 };
101
102 } // namespace remoting
103
104 #endif // REMOTING_HOST_LINUX_X_SERVER_CLIPBOARD_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698