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 1dfc3d4e5abcfafa04c380f4e2022ea271d79893..66f1c31650f7799701f8aba763b515e7c340aaeb 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
@@ -1225,7 +1225,6 @@ |
const ViewHostMsg_SelectionBounds_Params& params) { |
if (params.anchor_rect == params.focus_rect) |
caret_rect_ = params.anchor_rect; |
- first_selection_rect_ = params.anchor_rect; |
} |
void RenderWidgetHostViewMac::SetShowingContextMenu(bool showing) { |
@@ -1446,25 +1445,16 @@ |
TRACE_EVENT0("browser", |
"RenderWidgetHostViewMac::GetFirstRectForCharacterRange"); |
- const gfx::Range requested_range(range); |
// If requested range is same as caret location, we can just return it. |
- if (selection_range_.is_empty() && requested_range == selection_range_) { |
+ if (selection_range_.is_empty() && gfx::Range(range) == selection_range_) { |
if (actual_range) |
*actual_range = range; |
*rect = NSRectFromCGRect(caret_rect_.ToCGRect()); |
return true; |
} |
- if (composition_range_.is_empty()) { |
- if (!selection_range_.Contains(requested_range)) |
- return false; |
- *actual_range = selection_range_.ToNSRange(); |
- *rect = NSRectFromCGRect(first_selection_rect_.ToCGRect()); |
- return true; |
- } |
- |
const gfx::Range request_range_in_composition = |
- ConvertCharacterRangeToCompositionRange(requested_range); |
+ ConvertCharacterRangeToCompositionRange(gfx::Range(range)); |
if (request_range_in_composition == gfx::Range::InvalidRange()) |
return false; |
@@ -2897,36 +2887,10 @@ |
// TODO(thakis): Pipe |actualRange| through TextInputClientMac machinery. |
if (actualRange) |
*actualRange = range; |
- |
- const gfx::Range requested_range(range); |
- if (requested_range.is_reversed()) |
- return nil; |
- |
- gfx::Range expected_range; |
- const base::string16* expected_text; |
- |
- if (!renderWidgetHostView_->composition_range().is_empty()) { |
- expected_text = &markedText_; |
- expected_range = renderWidgetHostView_->composition_range(); |
- } else { |
- expected_text = &renderWidgetHostView_->selection_text(); |
- size_t offset = renderWidgetHostView_->selection_text_offset(); |
- expected_range = gfx::Range(offset, offset + expected_text->size()); |
- } |
- |
- if (!expected_range.Contains(requested_range)) |
- return nil; |
- |
- // Gets the raw bytes to avoid unnecessary string copies for generating |
- // NSString. |
- const base::char16* bytes = |
- &(*expected_text)[requested_range.start() - expected_range.start()]; |
- NSUInteger bytes_len = requested_range.length() * sizeof(base::char16); |
- base::scoped_nsobject<NSString> ns_string( |
- [[NSString alloc] initWithBytes:bytes |
- length:bytes_len |
- encoding:NSUTF16StringEncoding]); |
- return [[[NSAttributedString alloc] initWithString:ns_string] autorelease]; |
+ NSAttributedString* str = |
+ TextInputClientMac::GetInstance()->GetAttributedSubstringFromRange( |
+ renderWidgetHostView_->render_widget_host_, range); |
+ return str; |
} |
- (NSInteger)conversationIdentifier { |