Index: content/browser/renderer_host/render_widget_host_view_mac.mm |
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm |
index 34ff9bff0c4c67ba9027a346fffa47bac8f3e303..e19b656501ebe9aee2c1f319a9b93f4f2c1523dd 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
@@ -654,6 +654,8 @@ bool RenderWidgetHostViewMac::OnMessageReceived(const IPC::Message& message) { |
IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostViewMac, message) |
IPC_MESSAGE_HANDLER(ViewHostMsg_PluginFocusChanged, OnPluginFocusChanged) |
IPC_MESSAGE_HANDLER(ViewHostMsg_StartPluginIme, OnStartPluginIme) |
+ IPC_MESSAGE_HANDLER(ViewMsg_GetRenderedTextCompleted, |
+ OnGetRenderedTextCompleted) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
return handled; |
@@ -1080,8 +1082,17 @@ bool RenderWidgetHostViewMac::SupportsSpeech() const { |
} |
void RenderWidgetHostViewMac::SpeakSelection() { |
- if ([NSApp respondsToSelector:@selector(speakString:)]) |
- [NSApp speakString:base::SysUTF8ToNSString(selected_text_)]; |
+ if (![NSApp respondsToSelector:@selector(speakString:)]) |
+ return; |
+ |
+ if (selected_text_.empty() && render_widget_host_) { |
+ // Route an IPC message to get content as text for a web contents. |
jeremy
2014/06/29 11:38:55
Needs better comment, how about:
// If there's no
|
+ render_widget_host_->Send(new ViewMsg_GetRenderedText( |
+ render_widget_host_->GetRoutingID())); |
+ return; |
+ } |
+ |
+ [NSApp speakString:base::SysUTF8ToNSString(selected_text_)]; |
jeremy
2014/06/29 11:38:55
My preference would be to have this moved to a pri
|
} |
bool RenderWidgetHostViewMac::IsSpeaking() const { |
@@ -2101,6 +2112,15 @@ void RenderWidgetHostViewMac::OnStartPluginIme() { |
[cocoa_view_ setPluginImeActive:YES]; |
} |
+void RenderWidgetHostViewMac::OnGetRenderedTextCompleted( |
+ const std::string& text) { |
+ // Let TTS speak the text returned from call back |
+ if (text.empty()) |
+ return; |
jeremy
2014/06/29 11:38:55
Just thinking out loud - are we ok with a browser
sarka
2014/06/30 16:10:30
While TTS is in progress if another request is mad
|
+ |
+ [NSApp speakString:base::SysUTF8ToNSString(text)]; |
+} |
+ |
gfx::Rect RenderWidgetHostViewMac::GetScaledOpenGLPixelRect( |
const gfx::Rect& rect) { |
gfx::Rect src_gl_subrect = rect; |