Index: chrome/browser/android/contextualsearch/contextual_search_delegate.cc |
diff --git a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc |
index 525d8d21d27b77d45096277364cda770c60cf3ad..57845ce6dd3d0bfe47f87bc7259c3768c0bca939 100644 |
--- a/chrome/browser/android/contextualsearch/contextual_search_delegate.cc |
+++ b/chrome/browser/android/contextualsearch/contextual_search_delegate.cc |
@@ -297,24 +297,20 @@ void ContextualSearchDelegate::OnTextSurroundingSelectionAvailable( |
if (context_ == nullptr) |
return; |
- // Sometimes the surroundings are 0, 0, '', so fall back on the selection. |
- // See crbug.com/393100. |
- bool use_selection = false; |
+ // Sometimes the surroundings are 0, 0, '', so run the callback with empty |
+ // data in that case. See crbug.com/393100. |
if (start_offset == 0 && end_offset == 0 && surrounding_text.length() == 0) { |
- use_selection = true; |
- end_offset = context_->GetOriginalSelectedText().length(); |
+ surrounding_text_callback_.Run(std::string(), base::string16(), 0, 0); |
+ return; |
} |
- const base::string16& surrounding_text_or_selection( |
- use_selection ? base::UTF8ToUTF16(context_->GetOriginalSelectedText()) |
- : surrounding_text); |
// Pin the start and end offsets to ensure they point within the string. |
- int surrounding_length = surrounding_text_or_selection.length(); |
+ int surrounding_length = surrounding_text.length(); |
start_offset = std::min(surrounding_length, std::max(0, start_offset)); |
end_offset = std::min(surrounding_length, std::max(0, end_offset)); |
context_->SetSelectionSurroundings(start_offset, end_offset, |
- surrounding_text_or_selection); |
+ surrounding_text); |
// Call the Java surrounding callback with a shortened copy of the |
// surroundings to use as a sample of the surrounding text. |
@@ -324,9 +320,9 @@ void ContextualSearchDelegate::OnTextSurroundingSelectionAvailable( |
size_t selection_start = start_offset; |
size_t selection_end = end_offset; |
int sample_padding_each_side = sample_surrounding_size / 2; |
- base::string16 sample_surrounding_text = SampleSurroundingText( |
- surrounding_text_or_selection, sample_padding_each_side, &selection_start, |
- &selection_end); |
+ base::string16 sample_surrounding_text = |
+ SampleSurroundingText(surrounding_text, sample_padding_each_side, |
+ &selection_start, &selection_end); |
DCHECK(selection_start <= selection_end); |
surrounding_text_callback_.Run(context_->GetBasePageEncoding(), |
sample_surrounding_text, selection_start, |