Chromium Code Reviews| 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 4f9fa204a0a5f8620f68621df1c634d809d0259b..477f3fdee8ceddcd46e7c4d8f93d3a30a71b72ee 100644 |
| --- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
| +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
| @@ -73,6 +73,7 @@ |
| #import "ui/base/cocoa/appkit_utils.h" |
| #include "ui/base/cocoa/cocoa_base_utils.h" |
| #import "ui/base/cocoa/fullscreen_window_manager.h" |
| +#include "ui/base/cocoa/text_services_context_menu.h" |
| #import "ui/base/cocoa/underlay_opengl_hosting_window.h" |
| #include "ui/base/layout.h" |
| #include "ui/compositor/compositor.h" |
| @@ -137,13 +138,6 @@ RenderWidgetHostView* GetRenderWidgetHostViewToUse( |
| } // namespace |
| -// These are not documented, so use only after checking -respondsToSelector:. |
| -@interface NSApplication (UndocumentedSpeechMethods) |
| -- (void)speakString:(NSString*)string; |
| -- (void)stopSpeaking:(id)sender; |
| -- (BOOL)isSpeaking; |
| -@end |
| - |
| // Private methods: |
| @interface RenderWidgetHostViewCocoa () |
| @property(nonatomic, assign) NSRange selectedRange; |
| @@ -710,10 +704,6 @@ void RenderWidgetHostViewMac::UpdateDisplayVSyncParameters() { |
| browser_compositor_->UpdateVSyncParameters(vsync_timebase_, vsync_interval_); |
| } |
| -void RenderWidgetHostViewMac::SpeakText(const std::string& text) { |
| - [NSApp speakString:base::SysUTF8ToNSString(text)]; |
| -} |
| - |
| RenderWidgetHostViewBase* |
| RenderWidgetHostViewMac::GetFocusedViewForTextSelection() { |
| // We obtain the TextSelection from focused RWH which is obtained from the |
| @@ -1013,7 +1003,7 @@ void RenderWidgetHostViewMac::OnTextSelectionChanged( |
| base::string16 text; |
| if (!selection->GetSelectedText(&text)) |
| return; |
| - selected_text_ = base::UTF16ToUTF8(text); |
| + selected_text_ = text; |
| [cocoa_view_ setSelectedRange:selection->range.ToNSRange()]; |
| // Updates markedRange when there is no marked text so that retrieving |
| @@ -1101,11 +1091,6 @@ void RenderWidgetHostViewMac::SetTooltipText( |
| } |
| } |
| -bool RenderWidgetHostViewMac::SupportsSpeech() const { |
| - return [NSApp respondsToSelector:@selector(speakString:)] && |
| - [NSApp respondsToSelector:@selector(stopSpeaking:)]; |
| -} |
| - |
| void RenderWidgetHostViewMac::SpeakSelection() { |
| if (![NSApp respondsToSelector:@selector(speakString:)]) |
|
tapted
2017/01/13 21:37:33
ooh - I think this is no longer needed, since we'r
spqchan
2017/01/26 18:27:00
Done.
|
| return; |
| @@ -1119,17 +1104,7 @@ void RenderWidgetHostViewMac::SpeakSelection() { |
| return; |
| } |
| - SpeakText(selected_text_); |
| -} |
| - |
| -bool RenderWidgetHostViewMac::IsSpeaking() const { |
| - return [NSApp respondsToSelector:@selector(isSpeaking)] && |
| - [NSApp isSpeaking]; |
| -} |
| - |
| -void RenderWidgetHostViewMac::StopSpeaking() { |
| - if ([NSApp respondsToSelector:@selector(stopSpeaking:)]) |
| - [NSApp stopSpeaking:cocoa_view_]; |
| + ui::TextServicesContextMenu::SpeakText(selected_text_); |
| } |
| // |
| @@ -1688,7 +1663,7 @@ void RenderWidgetHostViewMac::SetTextInputActive(bool active) { |
| void RenderWidgetHostViewMac::OnGetRenderedTextCompleted( |
| const std::string& text) { |
| - SpeakText(text); |
| + ui::TextServicesContextMenu::SpeakText(base::UTF8ToUTF16(text)); |
| } |
| void RenderWidgetHostViewMac::PauseForPendingResizeOrRepaintsAndDraw() { |
| @@ -2363,8 +2338,8 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
| // Until it does, use NSPerformService(), which opens Dictionary.app. |
| // TODO(shuchen): Support GetStringAtPoint() & GetStringFromRange() for PDF. |
| // See crbug.com/152438. |
| - NSString* text = base::SysUTF8ToNSString( |
| - renderWidgetHostView_->selected_text()); |
| + NSString* text = |
| + base::SysUTF16ToNSString(renderWidgetHostView_->selected_text()); |
| if ([text length] == 0) |
| return; |
| scoped_refptr<ui::UniquePasteboard> pasteboard = new ui::UniquePasteboard; |
| @@ -2755,10 +2730,10 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
| nullptr; |
| if (action == @selector(stopSpeaking:)) |
| - return is_render_view && renderWidgetHostView_->IsSpeaking(); |
| + return is_render_view && ui::TextServicesContextMenu::IsSpeaking(); |
| if (action == @selector(startSpeaking:)) |
| - return is_render_view && renderWidgetHostView_->SupportsSpeech(); |
| + return is_render_view; |
| // For now, these actions are always enabled for render view, |
| // this is sub-optimal. |
| @@ -3351,7 +3326,7 @@ extern NSString *NSTextInputReplacementRangeAttributeName; |
| } |
| - (void)stopSpeaking:(id)sender { |
| - GetRenderWidgetHostViewToUse(renderWidgetHostView_.get())->StopSpeaking(); |
| + ui::TextServicesContextMenu::StopSpeaking(); |
| } |
| - (void)cancelComposition { |
| @@ -3422,14 +3397,12 @@ extern NSString *NSTextInputReplacementRangeAttributeName; |
| - (BOOL)writeSelectionToPasteboard:(NSPasteboard*)pboard |
| types:(NSArray*)types { |
| - const std::string& str = renderWidgetHostView_->selected_text(); |
| + const base::string16& str = renderWidgetHostView_->selected_text(); |
| if (![types containsObject:NSStringPboardType] || str.empty()) return NO; |
| - base::scoped_nsobject<NSString> text( |
| - [[NSString alloc] initWithUTF8String:str.c_str()]); |
| NSArray* toDeclare = [NSArray arrayWithObject:NSStringPboardType]; |
| [pboard declareTypes:toDeclare owner:nil]; |
| - return [pboard setString:text forType:NSStringPboardType]; |
| + return [pboard setString:SysUTF16ToNSString(str) forType:NSStringPboardType]; |
| } |
| - (BOOL)readSelectionFromPasteboard:(NSPasteboard*)pboard { |