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

Unified Diff: ui/base/x/selection_requestor.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/x/selection_owner.cc ('k') | ui/base/x/selection_requestor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/x/selection_requestor.h
diff --git a/ui/base/x/selection_requestor.h b/ui/base/x/selection_requestor.h
deleted file mode 100644
index 5455ff781fbda822b7e4ba612b2682f1a2e82a00..0000000000000000000000000000000000000000
--- a/ui/base/x/selection_requestor.h
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_BASE_X_SELECTION_REQUESTOR_H_
-#define UI_BASE_X_SELECTION_REQUESTOR_H_
-
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/event_types.h"
-#include "base/memory/ref_counted_memory.h"
-#include "base/time/time.h"
-#include "base/timer/timer.h"
-#include "ui/base/ui_base_export.h"
-#include "ui/gfx/x/x11_atom_cache.h"
-#include "ui/gfx/x/x11_types.h"
-
-namespace ui {
-class PlatformEventDispatcher;
-class SelectionData;
-
-// Requests and later receives data from the X11 server through the selection
-// system.
-//
-// X11 uses a system called "selections" to implement clipboards and drag and
-// drop. This class interprets messages from the stateful selection request
-// API. SelectionRequestor should only deal with the X11 details; it does not
-// implement per-component fast-paths.
-class UI_BASE_EXPORT SelectionRequestor {
- public:
- SelectionRequestor(XDisplay* xdisplay,
- XID xwindow,
- PlatformEventDispatcher* dispatcher);
- ~SelectionRequestor();
-
- // Does the work of requesting |target| from |selection|, spinning up the
- // nested message loop, and reading the resulting data back. The result is
- // stored in |out_data|.
- // |out_data_items| is the length of |out_data| in |out_type| items.
- bool PerformBlockingConvertSelection(
- XAtom selection,
- XAtom target,
- scoped_refptr<base::RefCountedMemory>* out_data,
- size_t* out_data_items,
- XAtom* out_type);
-
- // Requests |target| from |selection|, passing |parameter| as a parameter to
- // XConvertSelection().
- void PerformBlockingConvertSelectionWithParameter(
- XAtom selection,
- XAtom target,
- const std::vector<XAtom>& parameter);
-
- // Returns the first of |types| offered by the current owner of |selection|.
- // Returns an empty SelectionData object if none of |types| are available.
- SelectionData RequestAndWaitForTypes(XAtom selection,
- const std::vector<XAtom>& types);
-
- // It is our owner's responsibility to plumb X11 SelectionNotify events on
- // |xwindow_| to us.
- void OnSelectionNotify(const XEvent& event);
-
- // Returns true if SelectionOwner can process the XChangeProperty event,
- // |event|.
- bool CanDispatchPropertyEvent(const XEvent& event);
-
- void OnPropertyEvent(const XEvent& event);
-
- private:
- friend class SelectionRequestorTest;
-
- // A request that has been issued.
- struct Request {
- Request(XAtom selection, XAtom target, base::TimeTicks timeout);
- ~Request();
-
- // The target and selection requested in the XConvertSelection() request.
- // Used for error detection.
- XAtom selection;
- XAtom target;
-
- // Whether the result of the XConvertSelection() request is being sent
- // incrementally.
- bool data_sent_incrementally;
-
- // The result data for the XConvertSelection() request.
- std::vector<scoped_refptr<base::RefCountedMemory> > out_data;
- size_t out_data_items;
- XAtom out_type;
-
- // Whether the XConvertSelection() request was successful.
- bool success;
-
- // The time when the request should be aborted.
- base::TimeTicks timeout;
-
- // Called to terminate the nested message loop.
- base::Closure quit_closure;
-
- // True if the request is complete.
- bool completed;
- };
-
- // Aborts requests which have timed out.
- void AbortStaleRequests();
-
- // Mark |request| as completed. If the current request is completed, converts
- // the selection for the next request.
- void CompleteRequest(size_t index, bool success);
-
- // Converts the selection for the request at |current_request_index_|.
- void ConvertSelectionForCurrentRequest();
-
- // Blocks till SelectionNotify is received for the target specified in
- // |request|.
- void BlockTillSelectionNotifyForRequest(Request* request);
-
- // Returns the request at |current_request_index_| or NULL if there isn't any.
- Request* GetCurrentRequest();
-
- // Our X11 state.
- XDisplay* x_display_;
- XID x_window_;
-
- // The property on |x_window_| set by the selection owner with the value of
- // the selection.
- XAtom x_property_;
-
- // Dispatcher which handles SelectionNotify and SelectionRequest for
- // |selection_name_|. PerformBlockingConvertSelection() calls the
- // dispatcher directly if PerformBlockingConvertSelection() is called after
- // the PlatformEventSource is destroyed.
- // Not owned.
- PlatformEventDispatcher* dispatcher_;
-
- // In progress requests. Requests are added to the list at the start of
- // PerformBlockingConvertSelection() and are removed and destroyed right
- // before the method terminates.
- std::vector<Request*> requests_;
-
- // The index of the currently active request in |requests_|. The active
- // request is the request for which XConvertSelection() has been
- // called and for which we are waiting for a SelectionNotify response.
- size_t current_request_index_;
-
- // Used to abort requests if the selection owner takes too long to respond.
- base::RepeatingTimer<SelectionRequestor> abort_timer_;
-
- X11AtomCache atom_cache_;
-
- DISALLOW_COPY_AND_ASSIGN(SelectionRequestor);
-};
-
-} // namespace ui
-
-#endif // UI_BASE_X_SELECTION_REQUESTOR_H_
« no previous file with comments | « ui/base/x/selection_owner.cc ('k') | ui/base/x/selection_requestor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698