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

Unified Diff: content/browser/renderer_host/text_input_client_mac.h

Issue 166903005: mac: Add support for asynchronous dictionary lookup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes for avi. Created 6 years, 9 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
Index: content/browser/renderer_host/text_input_client_mac.h
diff --git a/content/browser/renderer_host/text_input_client_mac.h b/content/browser/renderer_host/text_input_client_mac.h
index 53318f95cb5bb49efe6403fe3bb62a05cbce2538..fe738202f7d6e6ce89bfd3ccd4ffbb95f8ed4ef1 100644
--- a/content/browser/renderer_host/text_input_client_mac.h
+++ b/content/browser/renderer_host/text_input_client_mac.h
@@ -7,6 +7,7 @@
#import <Cocoa/Cocoa.h>
+#include "base/mac/scoped_block.h"
#include "base/mac/scoped_nsobject.h"
#include "base/synchronization/condition_variable.h"
#include "base/synchronization/lock.h"
@@ -32,6 +33,12 @@ class RenderWidgetHost;
// requires getting information from the renderer synchronously. Rather than
// using an actual sync IPC message, a normal async ViewMsg is used with a lock
// and condition (managed by this service).
+//
+// Mac OS 10.8 introduced -[NSResponder quickLookWithEvent:].
+// We can use it to implement asynchronous dictionary lookup when the user
+// taps a word using three fingers.
+// But currently the "Look Up in Dictionary" context menu item still goes through
Avi (use Gerrit) 2014/03/12 17:10:54 80 col
Andre 2014/03/12 17:17:51 Done.
+// the above synchronous IPC.
class CONTENT_EXPORT TextInputClientMac {
public:
// Returns the singleton instance.
@@ -61,6 +68,18 @@ class CONTENT_EXPORT TextInputClientMac {
void SetFirstRectAndSignal(NSRect first_rect);
void SetSubstringAndSignal(NSAttributedString* string);
+ // This async method is invoked from -quickLookWithEvent: (tap with 3 fingers).
Avi (use Gerrit) 2014/03/12 17:10:54 80 col
Andre 2014/03/12 17:17:51 Done.
+ // The reply callback will be invoked from the IO thread, the caller is
+ // responsible for bouncing to the main thread if necessary.
+ // The callback parameters provide the attributed word under the point and
+ // the lower left baseline point of the text.
+ void GetStringAtPoint(RenderWidgetHost* rwh,
+ gfx::Point point,
+ void (^replyHandler)(NSAttributedString*, NSPoint));
+ // This is called on the IO thread when we get the renderer's reply for
+ // GetStringAtPoint.
+ void GetStringAtPointReply(NSAttributedString*, NSPoint);
+
private:
friend struct DefaultSingletonTraits<TextInputClientMac>;
TextInputClientMac();
@@ -82,6 +101,8 @@ class CONTENT_EXPORT TextInputClientMac {
base::Lock lock_;
base::ConditionVariable condition_;
+ base::mac::ScopedBlock<void(^)(NSAttributedString*, NSPoint)> replyHandler_;
+
DISALLOW_COPY_AND_ASSIGN(TextInputClientMac);
};
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_mac.mm ('k') | content/browser/renderer_host/text_input_client_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698