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

Side by Side Diff: chrome/browser/tab_contents/render_view_context_menu.cc

Issue 8502027: Fix AutocompleteMatch DCHECK() triggered by |RenderViewContextMenu::AppendSearchProvider()|. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_match.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 #include <utility>
7 8
8 #include "chrome/browser/tab_contents/render_view_context_menu.h" 9 #include "chrome/browser/tab_contents/render_view_context_menu.h"
9 10
10 #include "base/command_line.h" 11 #include "base/command_line.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
12 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
13 #include "base/stl_util.h" 14 #include "base/stl_util.h"
14 #include "base/string_util.h" 15 #include "base/string_util.h"
15 #include "base/time.h" 16 #include "base/time.h"
16 #include "base/utf_string_conversions.h" 17 #include "base/utf_string_conversions.h"
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 RecursivelyAppendExtensionItems(submenu_items, can_cross_incognito, submenu, 392 RecursivelyAppendExtensionItems(submenu_items, can_cross_incognito, submenu,
392 index); 393 index);
393 } 394 }
394 SetExtensionIcon(extension_id); 395 SetExtensionIcon(extension_id);
395 } 396 }
396 397
397 void RenderViewContextMenu::RecursivelyAppendExtensionItems( 398 void RenderViewContextMenu::RecursivelyAppendExtensionItems(
398 const ExtensionMenuItem::List& items, 399 const ExtensionMenuItem::List& items,
399 bool can_cross_incognito, 400 bool can_cross_incognito,
400 ui::SimpleMenuModel* menu_model, 401 ui::SimpleMenuModel* menu_model,
401 int *index) { 402 int* index) {
402 string16 selection_text = PrintableSelectionText(); 403 string16 selection_text = PrintableSelectionText();
403 ExtensionMenuItem::Type last_type = ExtensionMenuItem::NORMAL; 404 ExtensionMenuItem::Type last_type = ExtensionMenuItem::NORMAL;
404 int radio_group_id = 1; 405 int radio_group_id = 1;
405 406
406 for (ExtensionMenuItem::List::const_iterator i = items.begin(); 407 for (ExtensionMenuItem::List::const_iterator i = items.begin();
407 i != items.end(); ++i) { 408 i != items.end(); ++i) {
408 ExtensionMenuItem* item = *i; 409 ExtensionMenuItem* item = *i;
409 410
410 // If last item was of type radio but the current one isn't, auto-insert 411 // If last item was of type radio but the current one isn't, auto-insert
411 // a separator. The converse case is handled below. 412 // a separator. The converse case is handled below.
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 IDS_CONTENT_CONTEXT_COPY); 793 IDS_CONTENT_CONTEXT_COPY);
793 } 794 }
794 795
795 void RenderViewContextMenu::AppendSearchProvider() { 796 void RenderViewContextMenu::AppendSearchProvider() {
796 DCHECK(profile_); 797 DCHECK(profile_);
797 798
798 TrimWhitespace(params_.selection_text, TRIM_ALL, &params_.selection_text); 799 TrimWhitespace(params_.selection_text, TRIM_ALL, &params_.selection_text);
799 if (params_.selection_text.empty()) 800 if (params_.selection_text.empty())
800 return; 801 return;
801 802
803 ReplaceChars(params_.selection_text, AutocompleteMatch::kInvalidChars,
804 ASCIIToUTF16(" "), &params_.selection_text);
805
802 AutocompleteMatch match; 806 AutocompleteMatch match;
803 profile_->GetAutocompleteClassifier()->Classify( 807 profile_->GetAutocompleteClassifier()->Classify(
804 params_.selection_text, string16(), false, false, &match, NULL); 808 params_.selection_text, string16(), false, false, &match, NULL);
805 selection_navigation_url_ = match.destination_url; 809 selection_navigation_url_ = match.destination_url;
806 if (!selection_navigation_url_.is_valid()) 810 if (!selection_navigation_url_.is_valid())
807 return; 811 return;
808 812
809 string16 printable_selection_text = PrintableSelectionText(); 813 string16 printable_selection_text = PrintableSelectionText();
810 // Escape "&" as "&&". 814 // Escape "&" as "&&".
811 for (size_t i = printable_selection_text.find('&'); i != string16::npos; 815 for (size_t i = printable_selection_text.find('&'); i != string16::npos;
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after
1861 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages), 1865 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
1862 g_browser_process->clipboard()); 1866 g_browser_process->clipboard());
1863 } 1867 }
1864 1868
1865 void RenderViewContextMenu::MediaPlayerActionAt( 1869 void RenderViewContextMenu::MediaPlayerActionAt(
1866 const gfx::Point& location, 1870 const gfx::Point& location,
1867 const WebMediaPlayerAction& action) { 1871 const WebMediaPlayerAction& action) {
1868 source_tab_contents_->render_view_host()-> 1872 source_tab_contents_->render_view_host()->
1869 ExecuteMediaPlayerActionAtLocation(location, action); 1873 ExecuteMediaPlayerActionAtLocation(location, action);
1870 } 1874 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_match.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698